【发布时间】:2017-07-06 20:47:48
【问题描述】:
我想使用列表中的不同变量进行一系列分析。这些变量在同一个数据集中。
示例数据框如下
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)
【问题讨论】:
-
我只想把这一行改成
model <- lm(y~.,data=df[, c('y', var)])