在R中矢量化循环

Rob*_*man 5 loops r

必须有一种简单的方法来对R中的后续循环进行矢量化,但我看不到它.

w <- numeric(10)
z <- rnorm(20)
v <- c(sample(1:10,10),sample(1:10,10)) #Random ordering of c(1:10,1:10)
for(i in 1:10)
    w[i] <- sum(z[v==i])
Run Code Online (Sandbox Code Playgroud)

Ram*_*ath 11

另一种方法

w = rowsum(z, v)
Run Code Online (Sandbox Code Playgroud)

  • 我也不熟悉它,直到我不得不探索加速我的代码的方法.那时我遇到了一大堆功能:(1)rowsum,(2)max.col等,它们加速了通常使用apply family实现的特定操作. (3认同)