我使用的R函数需要一个变量列表作为输入参数,格式如下:
output <- funName(gender ~ height + weight + varName4, data=tableName)
基本上,输入参数是表中的列名(并且不包含在&#34;&#34;中)。我有一个列表,我想逐个添加这些变量;即先用一个变量运行函数,得到输出,然后逐步增加变量(每次得到一个输出),即
迭代1:
output <- funName(gender ~ height, data=tableName)
迭代2:
output <- funName(gender ~ height + weight, data=tableName)
迭代3:
output <- funName(gender ~ height + weight + varName4, data=tableName)
这可能吗?
答案 0 :(得分:3)
尝试以下方法:
# vector of variable names
myNames <- c("gender", "height", "weight", "varName4")
# print out results
for(i in 2:4) {
print(as.formula(paste(myNames[1], "~", paste(myNames[2:i], collapse="+"))))
}
当然,您可以将print
替换为相应的funName
,例如lm
,以及其他参数。所以
for(i in 2:4) {
lm(as.formula(paste(myNames[1], "~", paste(myNames[2:i], collapse="+"))), data=tableName)
}
应该像你期望的那样工作。如果您想以有序的方式保存结果,也可以使用lapply
:
temp <- lapply(2:4, function(i) as.formula(paste(myNames[1], "~",
paste(myNames[2:i], collapse="+"))))
例如,将保存公式列表。
使用@ ben-bolker提到的reformulate
函数,您可以简化paste
函数的网络:
for(i in 2:4) {
print(reformulate(myNames[2:i], response = myNames[1], intercept = TRUE))
}