指定要在循环R中使用的列的名称

时间:2014-03-06 16:43:14

标签: r loops for-loop ggplot2

我有一个超过30列且超过200行的df,但为了简单起见,我将使用8列的示例。

X1<-c(sample(100,25))
B<-c(sample(4,25,replace=TRUE))
C<-c(sample(2,25,replace =TRUE))
Y1<-c(sample(100,25))
Y2<-c(sample(100,25))
Y3<-c(sample(100,25))
Y4<-c(sample(100,25))
Y5<-c(sample(100,25))
df<-cbind(X1,B,C,Y1,Y2,Y3,Y4,Y5)
df<-as.data.frame(df)

我写了一个函数,融合数据生成一个带有X1的图,给出x轴值,并使用B和C中的值进行刻面。

plotdata<-function(l){
    melt<-melt(df,id.vars=c("X1","B","C"),measure.vars=l)
    plot<-ggplot(melt,aes(x=X1,y=value))+geom_point()
    plot2<-plot+facet_grid(B ~ C)
    ggsave(filename=paste("X_vs_",l,"_faceted.jpeg",sep=""),plot=plot2)
}

然后我可以手动输入所需的Y变量

plotdata("Y1")

我不想为所有列生成图表。我可以在plotdata中输入感兴趣的列然后得到结果,但这看起来非常不优雅(而且非常耗时)。我希望能够手动指定感兴趣的列,例如“Y1”,“Y3”,“Y4”然后写一个循环函数来完成所有指定的操作。

但是我不熟悉编写for循环,并且找不到循环使用我的函数所需的特定列名的方法。 (i in 1:length(df))的标准不合适,因为我只想循环用户指定的列

道歉,如果有一个答案已经在stackoverflow中。如果有的话,我找不到它。

1 个答案:

答案 0 :(得分:0)

感谢Roland提供以下答案:

尝试

for (x in c("Y1","Y3","Y4")) {plotdata(x)}

索引变量不必是数字