如何将 for 循环与需要字符串字段的函数一起使用?

How to use the for loop with function needing for a string field?

我正在使用 smbinning R 包来计算我的数据集中包含的变量信息值。

函数smbinning()非常简单,使用方法如下:

result = smbinning(df= dataframe, y= "target_variable", x="characteristic_variable", p = 0.05)

所以,df是你要分析的数据集,y是目标变量,x是你要计算其信息值统计的变量;我将所有的特征变量都枚举为z1, z2, ... z417,以便能够使用一个for循环来机械化所有的分析过程。

我尝试使用以下 for 循环:

for (i in 1:417) {
 result = smbinning(df=DATA, y = "FLAG", x = "DATA[,i]", p=0.05)
  }

为了能够计算对应于数据框 i 列的每个变量的信息值。

DATA class 是 "data.frame" 而 result"character"

所以,我的问题是如何计算每个变量的信息值并将其存储在命名为result的对象中?

谢谢!任何帮助将不胜感激!

没有提供示例数据我只能冒险猜测以下方法是否有效:

results_list = list()    
for (i in 1:417) {
    current_var = paste0('z', i)
    current_result = smbinning(df=DATA, y = "FLAG", x = current_var, p=0.05)
    results_list[i] = current_result$iv
}

您可以尝试使用 apply 方法之一,迭代 z 计数。 xsmbinning 的值应该是列名而不是列。

results = sapply(paste0("z",1:147), function(foo) {
   smbinning(df=DATA, y = "FLAG", x = foo, p=0.05)
})
class(results) # should be "list"
length(results) # should be 147
names(results) # should be z1,...
results[[1]] # should be the first result, so you can also iterate by indexing

我尝试了以下方法,因为你没有提供任何数据

> XX=c("IncomeLevel","TOB","RevAccts01")
> res = sapply(XX, function(z) smbinning(df=chileancredit.train,y="FlagGB",x=z,p=0.05))
Warning message:
NAs introduced by coercion 
> class(res)
[1] "list"
> names(res)
[1] "IncomeLevel" "TOB"         "RevAccts01"
> res$TOB
...

HTH