2017-09-15 62 views
1

我有一個數據集,我需要繪製每個變量。我爲此做了一個循環,因爲數據集包含50個變量。這是我到目前爲止:如何在R中的循環函數中添加一行(如abline)到一個圖中

invisible(lapply(colnames(Data),function(x){ 
plot(Data[,x],main=x,type="l", xlab= 'Week number', ylab='Amount') 
})) 

這將自動繪製在我的數據集中的所有變量在單獨的情節。但是,我需要在所有這些情節中畫出線條。這個想法是我爲每個x添加一條平均線。因此,高度上的水平線對應於平均值x的值。我試圖通過在上面的函數中添加abline(h = mean(x))函數來實現,但這不起作用。你們有什麼想法如何做到這一點?

+0

對於'plot'函數,我傾向於使用'for'循環而不是'lapply'。我沒有任何問題,比如你在這裏用'for(...){;情節(...); abline(...); };'。 – lmo

+0

難道你不是說你添加了'abline(h = mean(Data [,x]))'?這也可能是由於列中的「NA」;使用'mean(Data [,x],na.rm = TRUE)'。 – MrGumble

+0

@MrGumble謝謝!這個伎倆。我認爲這是由於NA不起作用。你是否也知道我可以如何添加2行,只有數據集中x的最後5個值才能添加2行,比平均值高20%,比平均值低20%? –

回答

0

你應該使用

abline(h=mean(Data[,x])) 

abline(h=mean(x)) 

因爲每次x是colnames。檢查使用此代碼

Data<-matrix(sqrt(1:20),ncol=4) 
colnames(Data)<-c(letters[1:4]) 
par(mfrow=c(2,2)) 

invisible(lapply(colnames(Data),function(x){ 
plot(Data[,x],main=x,type="l", xlab= 'Week number', ylab='Amount') 
abline(h=mean(Data[,x])) 
})) 
相關問題