'dmap_if` и'model.matrix'вместе

Я использую Arthritis набор данных из vcd пакет для выполнения одного горячего кодирования. Я хотел бы использоватьpurrr::dmap_if а также Matrix::model.matrix вместе, чтобы сделать это. Когда я бегу

do.call(model.matrix, list(Improved~.,Arthritis))

работает нормально.

Когда я использую ниже код не работает

Arthritis %>% dmap_if(is.factor, do.call(model.matrix, list(Improved~., .)))

1 ответ

Решение

Из того, что я могу сказать, dmap_if проходит по столбцам набора данных один раз и поэтому не обязательно является подходящим инструментом для этой задачи.

Если вы хотите использовать только факторные переменные перед применением функции, подумайте keep, После того, как вы выбрали только факторные переменные, используя keep ты можешь использовать invoke применять model.matrix, invoke функция это просто обертка для do.call это хорошо работает с трубами.

Arthritis %>% 
    keep(is.factor) %>% 
    invoke(model.matrix, Improved~., data = .)

   (Intercept) TreatmentTreated SexMale
1            1                1       1
2            1                1       1
3            1                1       1
4            1                1       1
5            1                1       1
6            1                1       1
7            1                1       1
8            1                1       1
9            1                1       1
10           1                1       1
11           1                1       1
12           1                1       1
13           1                1       1
14           1                1       1
15           1                1       0
16           1                1       0
...
Другие вопросы по тегам