2015-09-16 82 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