如何读取变量名列表并将它们替换为 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 个文件:
我想编写一个读取变量名列表的脚本。这些变量名是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 个文件: