2012-07-19 67 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() 
}