用于多个单个图的循环

时间:2015-09-16 12:53:50

标签: r for-loop plot

我的数据框有五列

> names(data)
[1] "Y" "X1" "X2" "X3" "X4" 

我想写一个循环,在每个X上绘制Y.这就是我所做的:

par(mfrow=c(2,2))

for (i in data[,2:5]){
   plot(data$i,data$Y,xlab=i, ylab="X")
}

我得到的错误是:

Error in xy.coords(x, y, xlabel, ylabel, log) : 
 'x' and 'y' lengths differ

我再次检查,所有列的长度相同。任何人都可以告诉我它做错了什么。感谢

1 个答案:

答案 0 :(得分:0)

使用data$i时,您尝试绘制名为i的列。请改用data[[i]]

此外,您正在迭代内部的 data(通过在控制台上打印data[2 : 5]来查看数据)。你几乎肯定想迭代列,而不是data.frame中的数据:

for (i in colnames(data)[2 : 5])
    plot(data[[i]], data$Y, xlab = i, ylab="X")

除了colnames(data)[2 : 5],您还可以迭代索引范围2 : 5。但是,您的xlab将是“2”,“3”,“4”,“5”而不是(您可能想要的)列的名称。