如何读取变量名列表并将它们替换为 R 中的函数?

How to read a list of variable names and substitute them in a function in R?

我想编写一个读取变量名列表的脚本。这些变量名是headers中的一些列data.frame。然后我想做一个 for-loop 来对 data.frame 中的指定变量执行各种操作,并将它们打印在相应命名的文件中,但我不知道如何进行必要的变量替换。 data.frame 有 1260 列和 2600 行。并非所有列都是连续变量,有些是因子、描述符等,所以我使用 varlist 来选择我要分析的列。

我在https://stat.ethz.ch/pipermail/r-help/2010-February/228752.html中发现了基本相同的问题,但作者的建议对我不起作用。

#Example script scaled down for simplicity
Dataset <- iris
varlist <- data.frame("Sepal.Length", "Sepal.Width", "Petal.Length")
for (i in 1:length(varlist)){
    model <- lm(SOMETHINGHERE_i ~ Petal.Width, data = Dataset)
    printing <- data.frame(SOMETHINGHERE_i = model$coefficients['Petal.Width'])
    write.csv(printing,paste0("C://Users/Me/Desktop/",SOMETHINGHERE_i,"/",SOMETHINGHERE_i,"PetalWidthSlope.csv"))
}

我上面链接的页面说我应该放 varlist[i] 并且它适用于保存部分,但模型给出错误:

Error: unexpected '=' in: " model <- lm(varlist[i] ~ Petal.Width, data = Dataset) printing <- data.frame(varlist[i] ="

它还建议使用 sapply(Dataset[varlist], function),但我不知道如何将它应用于 lm,但无论如何,如果我尝试使用 `sapply(Dataset[varlist], mean),它打印:

Error in [.default(Dataset, varlist) : invalid subscript type 'list'

我该怎么办?

提前致谢!

您可以使用 as.formula 将文本转换为有效的 R 公式。 (但是正如您发现的那样,您不能将 R 公式用作宏。)我还仅使用 varlist 项作为循环变量而不是连续整数。

Dataset <- iris
varlist <- data.frame("Sepal.Length", "Sepal.Width", "Petal.Length")
for (i in varlist ){ form <- as.formula( paste( i, "~ Petal.Width"))
     model <- lm(form, data = Dataset)
     printing <- data.frame(i = model$coefficients['Petal.Width'])
     write.csv(printing,paste0("~/Desktop/",i,"PetalWidthSlope.csv"))
    }

现在我的桌面上还有 3 个文件: