由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 提高R速度的一些tips
相关主题
R,用apply比用for loop 快?请教Base 70 中的一题 关于@
MCMC算法的Posterior Std. 一定是减少的么?问R和C的循环语句
求问一下MCMC和一般的蒙特卡洛法有什么区别?请问如何在R中读入2亿多行,每行一个0.XX的分数的文件?
quant analyst 一道概率的面试题靠,这个哪错了?
SAS里面怎么设置vector[合集] 一个关于Proc Qlim的问题
怎样在R LOOP里生成名字不同的DATAFRAME有关EM algorithm 的问题
请教一个sas 的basic问题R里面怎么construct power set?
SAS问题,关于@和@@的区别R memory urgent help
相关话题的讨论汇总
话题: reduce话题: function话题: filter话题: dframe话题: apply
进入Statistics版参与讨论
1 (共1页)
a******e
发帖数: 119
1
前段时间受了不少R运算速度太慢的折磨。做了点research 知道了点皮毛,抛砖引玉,
大家讨论一下。
1、Vectorization
for (i in …)
{
for (j in …) { dframe <- func(dframe,i,j)
}
}
这样的结构对R来说是个disaster。可以考虑ecterization
e.g. Instead of explicit element-by-element loop for
(i in 1:N) { A[i] <- B[i] + C[i] }
invoke the implicit elem.-by-elem. Operation: A <- B + C
2、用apply instead of looping
这个似乎有争议,有的说apply不能提高R的速度。不过,至少apply可以让你的code看
上去更简洁
3、Functional programming:
exp1:Filter(f, x) – Returns the elements of x for which f is true
> x
[1] 78 20 98 21 37
> odd <- function(n) (n %% 2 == 1)
> Filter(odd, x)
[1] 21 27
exp2: Reduce(f,x) is a way to iterate over a list or vector, x, by
applying
a function to successive results of f.
● Iterative summation:
s <- x[1] + x[2]
for (i in 3:length(s)) s <- s + x[i]
● Done using Reduce:
f <- function(a,b) a + b
s <- Reduce(f, x)
??大家觉得这个reduce function 对做MCMC有帮助么
I*****a
发帖数: 5425
2
我感觉apply能提高不少速度。
某些apply不行,比如mapply就很慢,好像。

【在 a******e 的大作中提到】
: 前段时间受了不少R运算速度太慢的折磨。做了点research 知道了点皮毛,抛砖引玉,
: 大家讨论一下。
: 1、Vectorization
: for (i in …)
: {
: for (j in …) { dframe <- func(dframe,i,j)
: }
: }
: 这样的结构对R来说是个disaster。可以考虑ecterization
: e.g. Instead of explicit element-by-element loop for

D******n
发帖数: 2836
3
参见 26481

【在 a******e 的大作中提到】
: 前段时间受了不少R运算速度太慢的折磨。做了点research 知道了点皮毛,抛砖引玉,
: 大家讨论一下。
: 1、Vectorization
: for (i in …)
: {
: for (j in …) { dframe <- func(dframe,i,j)
: }
: }
: 这样的结构对R来说是个disaster。可以考虑ecterization
: e.g. Instead of explicit element-by-element loop for

t*****w
发帖数: 254
4
I don't think your suggestion is much helpful for a biostatistician who
mainly uses R code. Yes Vectorization is the strategy.
a******r
发帖数: 706
5
Rcpp is another way to go, especially when programing the bottleneck
function.
a******e
发帖数: 119
6
什么是26481?

【在 D******n 的大作中提到】
: 参见 26481
a******e
发帖数: 119
7
什么是26481?

【在 D******n 的大作中提到】
: 参见 26481
w********m
发帖数: 1137
8
大牛,求解释

【在 D******n 的大作中提到】
: 参见 26481
D******n
发帖数: 2836
9
第26481号文章

【在 a******e 的大作中提到】
: 什么是26481?
i**z
发帖数: 194
10
参照 R cookbook 里面有不少 tips.
另外, lapply 可能会快点, sapply 和 loop 其实差不多。

前段时间受了不少R运算速度太慢的折磨。做了点research 知道了点皮毛,抛砖引玉,
大家讨论一下。
1、Vectorization
for (i in …)
{
for (j in …) { dframe <- func(dframe,i,j)
}
}
这样的结构对R来说是个disaster。可以考虑ecterization
e.g. Instead of explicit element-by-element loop for
(i in 1:N) { A[i] <- B[i] + C[i] }
invoke the implicit elem.-by-elem. Operation: A <- B + C
2、用apply instead of looping
这个似乎有争议,有的说apply不能提高R的速度。不过,至少apply可以让你的code看
上去更简洁
3、Functional programming:
exp1:Filter(f, x) – Returns the elements of x for which f is true
> x
[1] 78 20 98 21 37
> odd <- function(n) (n %% 2 == 1)
> Filter(odd, x)
[1] 21 27
exp2: Reduce(f,x) is a way to iterate over a list or vector, x, by
applying
a function to successive results of f.
● Iterative summation:
s <- x[1] + x[2]
for (i in 3:length(s)) s <- s + x[i]
● Done using Reduce:
f <- function(a,b) a + b
s <- Reduce(f, x)
??大家觉得这个reduce function 对做MCMC有帮助么

【在 a******e 的大作中提到】
: 前段时间受了不少R运算速度太慢的折磨。做了点research 知道了点皮毛,抛砖引玉,
: 大家讨论一下。
: 1、Vectorization
: for (i in …)
: {
: for (j in …) { dframe <- func(dframe,i,j)
: }
: }
: 这样的结构对R来说是个disaster。可以考虑ecterization
: e.g. Instead of explicit element-by-element loop for

s*********e
发帖数: 1051
11
为何不用平行计算?
1 (共1页)
进入Statistics版参与讨论
相关主题
R memory urgent helpSAS里面怎么设置vector
How to selectively plot data in R怎样在R LOOP里生成名字不同的DATAFRAME
matlab里边的 null matrix怎么个用法。请教一个sas 的basic问题
请教SAS/MACRO牛人SAS问题,关于@和@@的区别
R,用apply比用for loop 快?请教Base 70 中的一题 关于@
MCMC算法的Posterior Std. 一定是减少的么?问R和C的循环语句
求问一下MCMC和一般的蒙特卡洛法有什么区别?请问如何在R中读入2亿多行,每行一个0.XX的分数的文件?
quant analyst 一道概率的面试题靠,这个哪错了?
相关话题的讨论汇总
话题: reduce话题: function话题: filter话题: dframe话题: apply