看板 Statistics 關於我們 聯絡資訊
※ 引述《laba1014 (我也要去美國!!!)》之銘言: 想請問板上前輩 以下的雙迴圈要怎樣用 apply 簡化計算 ? aaa <- matrix(1:3, 3, 1) # aaa 是依個 3*1 的 vector a[i,1]= i , i =1, 2, 3 q <- matrix(NA, 3, 3) For (j in 1:3) { For (i in 1:3) { if ( a[i,1] < a[j,1] ) { q[i,j] <- 0 } else { q[i,j] <- 1 } }} q 出來應該會是個上三角矩陣 1 1 1 0 1 1 0 0 1 先謝謝肯回答的版友 <(_ _)> -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.200.159
puwawa:aaa[upper.tri(aaa)] <- 1 01/11 16:54
laba1014:p大 抱歉我沒有說清楚 我是想用 apply 來化簡前面的 01/11 18:23
laba1014:雙回圈的部份 後面上三角不算重點XD 01/11 18:23
laba1014:不過還是謝謝你 你教了我ㄧ個新技巧 ^ ^ 01/11 18:24
puwawa:先令 aaa <- diag(3),在用上面指令,就可以避開雙迴圈 01/12 16:04
抱歉我回個文 佔一下版面 版友請多包涵 P大 對不起 我還是說的不清不楚 XD 我是想寫個類似 compa <- function(s,t) { y <- s x <- matrix(t,n,1) q <- matrix(NA,n,1) for (i in 1:n) if (x[i,1] > y) {q[i,1] <- 0 } else {q[i,1] <- 1} return(q) } n <- 100 a <- matrix(rnorm(n,0,1),n,1) qwerty <- sapply(1:n,function(i)compa(a[i,1],a)) 這樣的東西 上面的寫法是可以跑出我要的矩陣 但是中間還是要用迴圈 (迴圈在simulation裡很討厭) 所以我想問看看有沒有不用迴圈就可以漂亮apply的作法 佔用你的時間很抱歉 <(_ _)> -- -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.230.8.69