[問題] (救回) loop in analysis

看板R_Language作者 (天)時間8年前 (2016/11/20 14:57), 8年前編輯推噓0(0059)
留言59則, 5人參與, 最新討論串1/1
請問一下 今天我有一個資料夾 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,但他出現錯誤 我上網找了幾個網站 但沒有找到解答 想要請問板上的高手 是那出現錯誤 謝謝 -- ※ 文章網址: https://www.ptt.cc/bbs/R_Language/M.1421525471.A.B99.html

01/18 07:17, , 1F
x1和x[1]不同
01/18 07:17, 1F

01/18 07:18, , 2F
你用plot(t[ ,1], t[, 2])比較好
01/18 07:18, 2F

01/18 07:19, , 3F
另外,圖如果沒存,用for loop不是很好用
01/18 07:19, 3F

01/18 16:13, , 4F
請問可以提供確切的code給我參考嗎? 謝謝
01/18 16:13, 4F

01/18 17:25, , 5F
其實我想要問的就是sas 的 %do %to macro在R如何寫這樣
01/18 17:25, 5F

01/18 20:27, , 6F
改用 t[ ,1] t[ ,2] t[ ,3] t[ ,4] 來提取變數。
01/18 20:27, 6F

01/18 20:27, , 7F
如果要用for loop,就是生出(1,2)和(3,4)就解決了。
01/18 20:27, 7F

01/18 21:32, , 8F
上面說的只要變項換個順序就不能達成 我想要的是universal
01/18 21:32, 8F

01/18 21:32, , 9F
的code
01/18 21:32, 9F

01/18 21:38, , 10F
那你可以思考可以universal的條件是基於什麼?
01/18 21:38, 10F

01/18 21:38, , 11F
在for loop裡,總是要指定一個vector變數。
01/18 21:38, 11F

01/18 21:39, , 12F
例如你想把for變數改成其它東西,那它會是什麼?
01/18 21:39, 12F

01/18 21:40, , 13F
請你說說看,這樣大家比較容易想出你真正有用的答案。
01/18 21:40, 13F

01/18 22:13, , 14F
就是conditional 特定的variable prefix +number
01/18 22:13, 14F

01/18 22:14, , 15F
這個prefix 在這邊就是x,y 後面變換的就是i = 1 to n
01/18 22:14, 15F

01/18 22:18, , 16F
那可能沒有直接解。要先用for生出x1,x2.. y1,y2字串
01/18 22:18, 16F

01/18 22:19, , 17F
應該沒有像SAS般的做法。
01/18 22:19, 17F

01/18 22:20, , 18F
如果要R的風格,可能不是一個data frame而是一個list。
01/18 22:20, 18F

01/18 22:21, , 19F
每個list是一個x和一個y。這樣就有現成的function了。
01/18 22:21, 19F

01/18 22:21, , 20F
每個list之下
01/18 22:21, 20F

01/18 22:22, , 21F
一直說錯... list之下是數個data frame或matrix
01/18 22:22, 21F

01/18 22:22, , 22F
以分別表示(x1,y1), (x2,y2)。
01/18 22:22, 22F

01/18 22:44, , 23F
for(i in 1:2){
01/18 22:44, 23F

01/18 22:45, , 24F
plot(t[,paste('x',i,sep="")],t[,paste('y',i,sep=""
01/18 22:45, 24F

01/18 22:46, , 25F
)])
01/18 22:46, 25F

01/18 22:46, , 26F
}
01/18 22:46, 26F

01/18 22:47, , 27F
不知道這是不是你想要的方式
01/18 22:47, 27F

01/18 22:57, , 28F
看起來不錯。意思是t[,"x1"]來提取t$x1。
01/18 22:57, 28F

01/18 23:05, , 29F
建議中間插個 dev.new() 不然前圖會被後圖取代。
01/18 23:05, 29F

01/18 23:27, , 30F
請問dev.new() 插入哪呢 我放在會後面似乎無法成功
01/18 23:27, 30F

01/18 23:28, , 31F
另外我自行延伸把plot 帶入一些常見的指令像是cor
01/18 23:28, 31F

01/18 23:28, , 32F
for(i in 1:2){ cor(paste('x',i,sep=""),paste('y',i,sep
01/18 23:28, 32F

01/18 23:28, , 33F
"")]) }
01/18 23:28, 33F

01/18 23:29, , 34F
卻無法成功 請問這個問題是?
01/18 23:29, 34F

01/18 23:30, , 35F
最後一個問題是 像一些model 給予分析 都給予最簡易數值
01/18 23:30, 35F

01/18 23:31, , 36F
我剛嘗試用上面的語句再寫成ci= cor(t$xi,t$yi)
01/18 23:31, 36F

01/18 23:31, , 37F
for(i in 1:2){paste('c',i,sep="")<-
01/18 23:31, 37F

01/18 23:31, , 38F
cor(t[,paste('x',i,sep="")],t[,paste('y',i,sep="")])
01/18 23:31, 38F

01/18 23:32, , 39F
結果失敗 請問一下有無方式可以成功呢 ? 謝謝
01/18 23:32, 39F

01/18 23:37, , 40F
發現dev.new放在最前面就成功了 謝謝告知這個指令
01/18 23:37, 40F

01/18 23:39, , 41F
cor()裡要塞二個vector。
01/18 23:39, 41F

01/18 23:39, , 42F
像是 cor(t[,"x1"], t[,"y1"])
01/18 23:39, 42F

01/18 23:40, , 43F
而你塞給cor()的只是字串,並不是實際數值。
01/18 23:40, 43F

01/18 23:41, , 44F
猜想你沒有完全明白aaron77217板友提供的源碼。
01/18 23:41, 44F

01/18 23:42, , 45F
paste('x',i,sep="") 會回傳字串,而
01/18 23:42, 45F

01/18 23:42, , 46F
t[,paste('x',i,sep="")] 會回傳一個向量。
01/18 23:42, 46F

01/18 23:43, , 47F
抱歉,沒看到後來你也試過了。
01/18 23:43, 47F

01/18 23:44, , 48F
問題可能是你cor()只輸入二個點。二個點求相關係數幹嘛?
01/18 23:44, 48F

01/18 23:45, , 49F
或是不只二個點,請再提供更多訊息。
01/18 23:45, 49F

01/19 00:07, , 50F
我後來發現兩個點的確有問題 我就新增多個數值
01/19 00:07, 50F

01/19 00:07, , 51F
for(i in 1:2){
01/19 00:07, 51F

01/19 00:08, , 52F
並且我是確定過當cor(t$x1,t$y1) 可以得到相關係數
01/19 00:08, 52F

01/19 00:08, , 53F
才進行的 抱歉打斷推文
01/19 00:08, 53F

01/19 00:08, , 54F
assign(paste("c",i,sep=""),cor(t[,paste("x",i,se
01/19 00:08, 54F

01/19 00:09, , 55F
p="")],t[,paste("y",i,sep="")]))
01/19 00:09, 55F

01/19 00:09, , 56F
}
01/19 00:09, 56F

01/19 00:10, , 57F
@@"沒關西 試試吧 這樣就可以同步產生c1 c2了
01/19 00:10, 57F

01/19 00:10, , 58F
感謝 測試成功 謝謝大家的教導 sas跟r的寫法在這個部份
01/19 00:10, 58F

01/19 00:11, , 59F
差異有點大 在sas原本簡單macro 但在r這邊就思維不一樣
01/19 00:11, 59F
※ 編輯: celestialgod (36.233.51.224), 11/20/2016 14:57:36
文章代碼(AID): #1OCKb7LZ (R_Language)
文章代碼(AID): #1OCKb7LZ (R_Language)