如何使用循环调用列名:

时间:2018-09-11 21:25:50

标签: r loops dataframe

我对R很陌生,我想知道使用for循环调用不同列的最佳方法是什么。

我的代码如下:

Variables <- c("Var1","Var2","Var3","Var4","Var5","Var6","Var7")
Years <- c(2015,2016,2017,2018)

for (Year in Years) {
    for (Var in Variables) {
        TT = auc(data[data$Def_Year==Year,]$Good_Bad,
                 data[data$Def_Year==Year,]$Var)
        print (TT)
    }
}

我正在尝试计算每年每个变量的AUC(roc曲线下面积),以便检查信用评分模型的性能稳定性。 问题是R无法理解$Var命令。在excel中,我有时使用&来克服这些障碍。我很想听听您的建议。

1 个答案:

答案 0 :(得分:2)

嗨,您可以做这样的事情。请参阅下面的示例代码

df <- data.frame(v1 = c(1,2,3), v2 = c(4,5,6))
variables <- c("v1", "v2")

for(var in variables) {
   print(df[, var])
}
Output:
[1] 1 2 3
[1] 4 5 6

我还没有直接解决您的代码,因为不建议SO完全解决任务,而只是提供解决方案的一般指南。我建议您阅读以下内容:https://stats.idre.ucla.edu/r/modules/subsetting-data/以更好地理解R中的子集。 另请参阅https://cran.r-project.org/doc/manuals/R-lang.html#Indexing以了解R中的索引。 从上方:

  

使用$的形式适用于递归对象,例如列表和成对列表。它仅允许使用文字字符串或符号作为索引。也就是说,索引是不可计算的:对于需要评估表达式以找到索引的情况,请使用x [[expr]]。将$应用于非递归对象是错误的。