[英]Specifying names of columns to be used in a loop R
我有一個超過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))不適合,因為我只想循環用戶指定的列
如果對此有答案,我很抱歉。 如果有的話,我找不到。
感謝Roland提供以下答案:
嘗試
for (x in c("Y1","Y3","Y4")) {plotdata(x)}
索引變量不必是數字
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.