Как использовать цикл for с функцией, необходимой для строкового поля?
я использую smbinning R пакет для вычисления значения информации переменных, включенных в мой набор данных.
функции smbinning()
довольно просто, и он должен использоваться следующим образом:
result = smbinning(df= dataframe, y= "target_variable", x="characteristic_variable", p = 0.05)
и df
- это набор данных, который вы хотите проанализировать, y
целевая переменная и x
- переменная, из которой вы хотите вычислить статистику информационного значения; я перечисляю все характерные переменные как z1, z2, ... z417
уметь использовать a цикл for для механизации всего процесса анализа.
я попытался использовать следующее для цикла:
for (i in 1:417) {
result = smbinning(df=DATA, y = "FLAG", x = "DATA[,i]", p=0.05)
}
для того чтобы иметь возможность вычислить данные значения для каждой переменной, соответствующей i
столбец фрейма данных.
на DATA
класс "данных.кадр " пока result
один "character"
.
Итак, мой вопрос заключается в том, как вычислить информационное значение каждой переменной и сохранить это в объекте, обозначенном result
?
спасибо! Любая помощь будет оценена!
2 ответов
нет выборки данных, я могу только предположить, что следующее будет работать:
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-счетчикам. The 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