2017-09-15 82 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])) 
})) 
相关问题