[程式] R 基本迴圈的兩個問題

看板Statistics作者 (I-20快點來)時間15年前 (2010/05/17 05:00), 編輯推噓0(007)
留言7則, 5人參與, 最新討論串1/2 (看更多)
抱歉 打擾了 想請教兩個關於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)

05/17 07:16, , 1F
這要看你怎麼寫 f(x,y) 了, 寫得好的話可以用 sapply ??
05/17 07:16, 1F

05/17 09:12, , 2F
我想是你產生t(Q)的f(X,Y)寫的方式無法處理X, Y vectors
05/17 09:12, 2F

05/17 09:14, , 3F
以你的例子,可用outer(X, Y, FUN="*")來替代雙重迴圈式
05/17 09:14, 3F

05/17 09:28, , 4F
令函數f=function(a,b){a*b+8},outer(x, y, "f")。
05/17 09:28, 4F

05/17 13:44, , 5F
你的f()??
05/17 13:44, 5F

05/19 05:13, , 6F
感謝樓上的幾位前輩指教 我成功壓縮計算時間了
05/19 05:13, 6F

05/19 05:13, , 7F
真的非常感謝 m(_ _)m
05/19 05:13, 7F
文章代碼(AID): #1By5q67Y (Statistics)
文章代碼(AID): #1By5q67Y (Statistics)