Re: [程式] R apply

看板Statistics作者 (我也要去美國!!!)時間16年前 (2010/01/13 16:26), 編輯推噓0(000)
留言0則, 0人參與, 最新討論串2/4 (看更多)
※ 引述《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

01/11 16:54,
aaa[upper.tri(aaa)] <- 1
01/11 16:54

01/11 18:23,
p大 抱歉我沒有說清楚 我是想用 apply 來化簡前面的
01/11 18:23

01/11 18:23,
雙回圈的部份 後面上三角不算重點XD
01/11 18:23

01/11 18:24,
不過還是謝謝你 你教了我ㄧ個新技巧 ^ ^
01/11 18:24

01/12 16:04,
先令 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
文章代碼(AID): #1BJOEuQE (Statistics)
討論串 (同標題文章)
以下文章回應了本文
程式
1
1
完整討論串 (本文為第 2 之 4 篇):
程式
1
1
程式
1
1
程式
2
5
文章代碼(AID): #1BJOEuQE (Statistics)