如何使用带有字符串字段功能的for循环?

Qua*_*pik 8 statistics for-loop r binning

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

该函数smbinning()非常简单,必须按如下方式使用:

result = smbinning(df= dataframe, y= "target_variable", x="characteristic_variable", p = 0.05)
Run Code Online (Sandbox Code Playgroud)

那么,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)
  }
Run Code Online (Sandbox Code Playgroud)

为了能够计算i与数据帧的列对应的每个变量的信息值.

DATA类别是"data.frame",而result一个是"character".

那么,我的问题是如何计算每个变量的信息值并将其存储在以对象计价的值中result

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

Tch*_*hke 6

没有提供样本数据我只能猜测以下内容是否有效:

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
}
Run Code Online (Sandbox Code Playgroud)


Din*_*esh 5

您可以尝试使用其中一种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
Run Code Online (Sandbox Code Playgroud)

我尝试了以下内容,因为您没有提供任何数据

> 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
...
Run Code Online (Sandbox Code Playgroud)

HTH