如何将 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 计数。 x
到 smbinning
的值应该是列名而不是列。
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
我正在使用 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 计数。 x
到 smbinning
的值应该是列名而不是列。
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