如何将变量名用作for循环中的字符串?

时间:2017-06-19 15:52:14

标签: r for-loop

我知道:

deparse(substitute(x))

允许我们获取变量名称" x"作为一个字符串,但在for循环索引的上下文中,它将返回索引本身而不是它引用的变量。

我的代码包含3个示例:

Histogram <- function(n){
    l <- list()
    m <- list()
    s <- list()
    df <- data.frame(l, m, s, stringsAsFactors = F) #Dataframe to store output
    for(i in names(n)){
       CS <- normalmixEM(n$i) #Generates Histogram
       plot(CS, which = 2, main2 = paste(deparse(substitute(i)), "Colony Size (mm)"))

       df <- cbind(CS$lambda, CS$mu, CS$sigma)
       dev.copy(png, paste(deparse(substitute(i)),".png")) #Export histogram
       dev.off()
       }
 write.csv(df, file = paste(deparse(substitute(n)), ".csv"))
}

我理想的地方:

  • 包含当前循环中变量名称的图主标题(i)
  • 导出的绘图的标签包含相同的变量(i)
  • 最终导出的.csv文件名是放入函数的数据框的名称(n)

我的输入数据采用以下格式:

>head(my_values) 
X1A  X2A  X3A  X4A  X5A  X6A  X7A  X8A  X9A X10A X11A X12A X13A X14A X15A X16A X17A X18A X19A X20A X21A X22A X23A
1 2.11 4.58 4.39 5.43 5.73 4.96 3.89 1.65 5.56 3.72 4.20 2.81 4.80 3.95 4.31 3.84 1.63 4.65 2.11 1.90 3.78 6.80 5.51
2 0.55 3.32 4.58 4.67 5.75 4.39 2.39 1.96 4.01 2.85 3.46 2.51 2.28 3.70 4.25 3.30 4.37 4.04 2.79 1.84 3.93 5.18 4.27
3 1.96 3.84 4.14 6.42 5.47 6.17 5.37 1.88 5.85 2.75 3.74 2.47 4.84 2.49 2.56 3.87 4.84 3.19 2.26 2.83 5.03 4.56 5.94

有没有办法在将循环索引转换为字符串之前从循环索引中恢复变量名?

0 个答案:

没有答案