Как использовать цикл 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