'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
...