2012-07-19 120 views
-4

我有有有LABELXYZ123_river,LABELXYZ123_lake,LABELXYZ345_river,LABELXYZ345_lake等列名数据....我已在实际变量 LABELXYZ123,LABELXYZ345等名单..我想为每个标签上的单独数字绘制河流和湖泊数据。我带着那个代码来,那是行不通的。我认为变量的问题和它的名字。你能否建议我解决方案?谢谢...在循环使用变量对R

data <- read.table("data.txt",header=T,row.names=1) 
lst <- c("LABELXYZ123","LABELXYZ345") 
for(i in lst) { 
lbl_river <- paste("data","$",LABELXYZ123,"_river",sep="") 
lbl_lake <- paste("data","$",LABELXYZ123,"_lake",sep="") 
allt <- c(lbl_lake,lbl_river) 
png(filename=i".png") 
plot(paste(lbl_river,xaxt='n',xlab="",ylab="i",type="b",col="darkgreen",lwd=3,ylim=c(min(allt),max(allt))) 
lines(paste(lbl_lake,type="b",col="darkred",lwd=3) 
dev.off() 
} 

lbl_river它实际上data$LABELXYZ123_river

+0

什么是你试图用绘图函数绘制(什么是你的X轴?你的Y轴是什么?)。 – mnel 2012-07-19 01:20:51

+0

你正在努力使用'paste'来构建'R'表达式(然后你需要'调用'你的代码来工作 – mnel 2012-07-19 01:22:59

回答

3

力图挽救的东西....更多来当绘图整理出来

data <- read.table("data.txt",header=T,row.names=1) 
lst <- c("LABELXYZ123","LABELXYZ345") 
for(label_name in lst) { 
    lbl_river <- data[[paste(label_name, "river", sep = "_"]] 
    lbl_lake <- data[[paste(label_name, "lake", sep = "_"]] 

} 
+0

谢谢!非常棒! – 2012-07-19 01:43:01

+0

你的绘图代码不会工作,如果你在问题中的代码是你正在使用的代码! – mnel 2012-07-19 02:02:38

+0

我使用你的quesry对数据进行子集化的想法重写了它 - 这是完美的工作。 – 2012-07-19 11:45:28

0

使用MNEL建议..

data <- read.table("data.txt",header=T,row.names=1) 
lst <- c("LABELXYZ123","LABELXZZ123","LABELXYZ345","LABELXYZ567","LABELXYY1234","LABELXXX123") 
labs <- row.names(data) 
for(i in lst) { 
    png(filename=paste(i,".png",sep=""),width = 700, height = 350) 
    river <- data[[paste(i, "_river", sep = "")]] 
    lake <- data[[paste(i, "_lake", sep = "")]] 
    allt <- c(river,lake) 
    plot(river, xaxt='n',xlab="",ylab=i,type="b",col="darkred",lwd=3,ylim=c(min(allt)*1.05,max(allt)*0.95)) 
    lines(lake,type="b",col="darkgreen",lwd=3) 
    axis(1,at=1:16,labels=labs,las=2) 
    dev.off() 
}