我正在使用来自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~., .)))发布于 2016-06-22 18:11:49
据我所知,dmap_if一次遍历dataset的列,因此不一定是完成此任务的合适工具。
如果要在应用函数之前只使用因子变量,请考虑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
...https://stackoverflow.com/questions/37970385
复制相似问题