2015-09-16 102 views
0

我的数据帧的多条曲线有五列for循环单

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

我想写一个循环绘制Ÿ对每个X.这是我做过什么:

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

试试'plot(data [,i],....' –

回答

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”而不是(如你可能打算的)列的名称。

+0

非常感谢,这真的很有用。 – KS89