作者laba1014 (I-20快點來)
站內Statistics
標題[程式] R 基本迴圈的兩個問題
時間Mon May 17 05:00:51 2010
抱歉 打擾了 想請教兩個關於R的迴圈問題
Q1: 我現在手上有樣本 X[i] , i = 1:n ; 以及函數 f(x,y)
Y[j] , j = 1:m
我現在想造一個 n ×m 的 matrix P
雙迴圈寫成
for (i in 1:n) {
for (j in 1:m) {
P[i,j] <- f(X[i], Y[j])
}}
我的問題在 n,m 大的時候他實在很慢 .....
想請問版友能否賜教些更快的簡化作法??
Q2: 上述的問題我有嘗試過用 X <- X[1:n] , Y <- Y[1:m]
Q <- f(X,Y) 來做,嘗試簡單的例子時 t(Q) 就會和 P 相等
但是實際操作的時候 除了第一行 t(Q)[,1] 和 P[,1] 會相等之外
其他位置均不相同, 想請教是哪裡出錯了呢 ?
不好意思 問題蠻陽春的 懇請板上的前輩不吝指教 <(_ _)>
--
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 61.230.14.158
※ 編輯: laba1014 來自: 61.230.14.158 (05/17 05:02)
→ maoc:這要看你怎麼寫 f(x,y) 了, 寫得好的話可以用 sapply ?? 05/17 07:16
→ diplazium:我想是你產生t(Q)的f(X,Y)寫的方式無法處理X, Y vectors 05/17 09:12
→ diplazium:以你的例子,可用outer(X, Y, FUN="*")來替代雙重迴圈式 05/17 09:14
→ rockken:令函數f=function(a,b){a*b+8},outer(x, y, "f")。 05/17 09:28
→ clickhere:你的f()?? 05/17 13:44
→ laba1014:感謝樓上的幾位前輩指教 我成功壓縮計算時間了 05/19 05:13
→ laba1014:真的非常感謝 m(_ _)m 05/19 05:13