請問一下
今天我有一個資料夾 t
變項
x1 y1 x2 y2
1 46 5452 9 885
2 546 321 87 8
我想要使用一個loop 去畫圖
plot(t$x1, t$y1)
plot(t$x2, t$y2)
for(i in 1:2){
plot(t$x[i], t$y[i])
}
我使用以下的code,但他出現錯誤
我上網找了幾個網站 但沒有找到解答
想要請問板上的高手
是那出現錯誤
謝謝
作者: obarisk (OSWALT) 2015-01-18 07:17:00
x1和x[1]不同你用plot(t[ ,1], t[, 2])比較好另外,圖如果沒存,用for loop不是很好用
作者:
andrew43 (討厭有好心推文後刪文者)
2015-01-18 20:27:00改用 t[ ,1] t[ ,2] t[ ,3] t[ ,4] 來提取變數。如果要用for loop,就是生出(1,2)和(3,4)就解決了。那你可以思考可以universal的條件是基於什麼?在for loop裡,總是要指定一個vector變數。例如你想把for變數改成其它東西,那它會是什麼?請你說說看,這樣大家比較容易想出你真正有用的答案。那可能沒有直接解。要先用for生出x1,x2.. y1,y2字串應該沒有像SAS般的做法。如果要R的風格,可能不是一個data frame而是一個list。每個list是一個x和一個y。這樣就有現成的function了。每個list之下一直說錯... list之下是數個data frame或matrix以分別表示(x1,y1), (x2,y2)。
作者: aaron77217 (慎) 2015-01-18 22:44:00
for(i in 1:2){plot(t[,paste('x',i,sep="")],t[,paste('y',i,sep="")])}不知道這是不是你想要的方式
作者:
andrew43 (討厭有好心推文後刪文者)
2015-01-18 22:57:00看起來不錯。意思是t[,"x1"]來提取t$x1。建議中間插個 dev.new() 不然前圖會被後圖取代。cor()裡要塞二個vector。像是 cor(t[,"x1"], t[,"y1"])而你塞給cor()的只是字串,並不是實際數值。猜想你沒有完全明白aaron77217板友提供的源碼。paste('x',i,sep="") 會回傳字串,而t[,paste('x',i,sep="")] 會回傳一個向量。抱歉,沒看到後來你也試過了。問題可能是你cor()只輸入二個點。二個點求相關係數幹嘛?或是不只二個點,請再提供更多訊息。
作者: aaron77217 (慎) 2015-01-19 00:07:00
for(i in 1:2){assign(paste("c",i,sep=""),cor(t[,paste("x",i,sep="")],t[,paste("y",i,sep="")]))}@@"沒關西 試試吧 這樣就可以同步產生c1 c2了