【发布时间】:2016-06-03 14:33:57
【问题描述】:
我必须在大型矩阵的列中运行类似的代码。
set.seed(1)
my_vector <- runif( 10000 )
my_sums <- NULL
for ( l in 1:length( my_vector ) ) {
current_result <- my_vector[ my_vector < runif( 1 ) ]
my_sums[l] <- sum( current_result )
}
head(my_sums)
# [1] 21.45613 2248.31463 2650.46104 62.82708 11.11391 86.21950
Sys.time 结果:
user system elapsed
1.14 0.00 1.14
关于如何提高性能的任何想法?
【问题讨论】:
-
replicate(1e4, sum(my_vector[my_vector < runif(1)]))我及时得到了一点提升 -
我还通过提前为
my_sums分配正确的大小来改进您的循环。my_sums <- numeric(10000) -
@AntonioDamico:请不要随意添加
rcpp标签。现在删除它。 -
如果你想在一个大的
matrix中跨列运行类似的代码,最好提供一个与此数据结构匹配的可重现示例,例如matrix、data.frame、data.table -
您应该单击此问题的优秀答案之一旁边的复选标记,将其标记为已接受。当您这样做时,复选标记将颜色变为绿色。投票也是对回答您的问题所付出的努力表示赞赏的标志。 :D
标签: r