我想使用列表中的不同变量进行一系列分析。这些变量位于同一数据集中。
样本数据框如下
df <- data.frame(x1=runif(10),
x2=runif(10),
x3=runif(10),
x4=runif(10),
y=runif(10))
# I would like to use variables from this list
xlist <- c("x1","x2","x3")
summary<-NA
我的想法是使用for循环或lapply,但似乎两个方法在从列表中调用变量时都有相同的问题。 问题是我在循环中使用“var”表示x1,x2或x3,但像“lm”这样的函数需要一个“data”参数,函数会将var识别为要调用的变量,而不是x1 ,x2或x3。
任何想法我怎么能避免这个?
# using for loop
for (var in xlist) {
model <- lm(y~var,data=df)
temp <- data.frame(coef=model$coefficients[2])
summary<- rbind(summary,temp)
}
# using lapply
func <- function(var){
model <- lm(y~var,data=df)
temp <- data.frame(coef=model$coefficients[2])
}
result <- lapply(xlist, func)
答案 0 :(得分:2)
也许您需要formula
功能......
for (var in xlist) {
form <- formula(paste0("y~",var))
model <- lm(form,data=df)
temp <- data.frame(coef=model$coefficients[2])
summary<- rbind(summary,temp)
}
summary
coef
x1 0.3626764
x2 -0.3194918
x3 0.1216511
它应该与lapply
完全相同(或者您可能更喜欢sapply
)。