R中的for循环 - 生成不同的图形

for loop in R - generate different graphics

如果我有一组不同样本的数据 (x) 和一个固定的 y,例如:

> x1 <- c(5,6,7,8)
> x2 <- c(9,7.8,6,8)
> x3 <- c(7,3,5,1)x 
> y <- c(20,21,20,50)

如果我想尝试绘制这些数据,例如 (x1 ~ y)、(x2 ~ y)、(x3 ~ y)

> x_data <- data_frame(x1, x2, x3)
> 
> for (i in seq_along(x_data)) {   
>   model <- lm(x_data[i] ~ y)
>   plot(model) 
> }

但是,这不起作用,我收到以下错误:

Error in model.frame.default(formula = x_data[i] ~ y, drop.unused.levels = TRUE) : 
variable lengths differ (found for 'x_data')

我正在尝试描绘它们以检查是否存在对值的依赖性。

我们可以用 paste

创建公式
par(mfrow = c(3, 4))
for (i in seq_along(x_data)) {   
    model <- lm(as.formula(paste(names(x_data)[i],  "~ y")), data = x_data)
      plot(model) 
     }


reformulate

par(mfrow = c(3, 4))
for (i in seq_along(x_data)) {   
    model <- lm(reformulate("y", response = names(x_data)[i]), data = x_data)
      plot(model) 
     }

考虑 reformulate 并将所有向量绑定到数据框中以与 lmdata 参数一起使用:

model_data <- data.frame(y, x1, x2, x3)

# ITERATE ACROSS COLUMN NAMES, IGNORING FIRST
for (x in colnames(model_data[-1])) {   
  model <- lm(reformulate("y", response=x), data=model_data)
  plot(model) 
}