将purrr的“ modify_if”与函数配合使用

时间:2019-05-28 07:03:01

标签: r purrr

我正在尝试将包discretize_rgr的{​​{1}}函数(here)应用于数据帧的多个列。

对于单列,它以这种方式为我工作:

funModeling

因此,我正在尝试使用discretize_rgr(input = df.div$to_be_discretized, target = df.div$TARGET, max_n_bins=10) 包以这种方式管理多列:

purrr

但出现以下错误:

  

顺序错误(fpoints_top):参数1不是向量

怎么了?

更新(示例数据)

df.div %>%
      modify_if( is.numeric, ~ discretize_rgr(., target = df.div$TARGET, max_n_bins=10))

1 个答案:

答案 0 :(得分:0)

我没有您的数据,所以我只能猜测。但是尝试这样做:

library(tidyverse)
library(funModeling)



iris %>%
  modify_if(is.numeric, ~ discretize_rgr(.x, target = as.character(.x), max_n_bins=10)) 

 Sepal.Length Sepal.Width Petal.Length Petal.Width    Species
1    [5.00,5.40) [3.30,3.60)    [1.0,1.5) [0.10,0.30)     setosa
2    [4.30,5.00) [2.90,3.04)    [1.0,1.5) [0.10,0.30)     setosa
3    [4.30,5.00) [3.04,3.30)    [1.0,1.5) [0.10,0.30)     setosa
4    [4.30,5.00) [3.04,3.30)    [1.5,3.9) [0.10,0.30)     setosa
5    [5.00,5.40) [3.60,4.40]    [1.0,1.5) [0.10,0.30)     setosa
6    [5.40,5.70) [3.60,4.40]    [1.5,3.9) [0.30,1.16)     setosa
7    [4.30,5.00) [3.30,3.60)    [1.0,1.5) [0.30,1.16)     setosa
8    [5.00,5.40) [3.30,3.60)    [1.5,3.9) [0.10,0.30)     setosa
9    [4.30,5.00) [2.90,3.04)    [1.0,1.5) [0.10,0.30)     setosa
10   [4.30,5.00) [3.04,3.30)    [1.5,3.9) [0.10,0.30)     setosa
11   [5.40,5.70) [3.60,4.40]    [1.5,3.9) [0.10,0.30)     setosa