作者laba1014 (我也要去美国!!!)
站内Statistics
标题Re: [程式] R apply
时间Wed Jan 13 16:26:29 2010
※ 引述《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
1F:推 puwawa:aaa[upper.tri(aaa)] <- 1 01/11 16:54
2F:→ laba1014:p大 抱歉我没有说清楚 我是想用 apply 来化简前面的 01/11 18:23
3F:→ laba1014:双回圈的部份 後面上三角不算重点XD 01/11 18:23
4F:→ laba1014:不过还是谢谢你 你教了我ㄧ个新技巧 ^ ^ 01/11 18:24
5F:推 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