我的数据框有五列
> 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
我再次检查,所有列的长度相同。任何人都可以告诉我它做错了什么。感谢
答案 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”而不是(您可能想要的)列的名称。