0

Arthritisパッケージのデータ セットを使用vcdして、1 つのホット エンコーディングを実行しています。purrr::dmap_ifこれを行うには、 and をMatrix::model.matrix一緒に使用したいと思います。私が走るとき

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

正常に動作しています。

以下のコードを使用すると機能しません

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

1 に答える 1

1

私が知るdmap_if限り、データセットの列を 1 つずつ通過するため、必ずしもこのタスクに適したツールとは思えません。

関数を適用する前に因子変数のみを使用する場合は、 を検討してkeepください。を使用して因子変数のみを選択したら、 applykeepを使用できます。この関数は、パイプでうまく動作する単なるラッパーです。invokemodel.matrixinvokedo.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
...
于 2016-06-22T18:11:49.870 に答える