【发布时间】:2017-12-18 01:35:18
【问题描述】:
我需要取两个向量的任意两个元素之间的差。
如果A<-c(1,2) 和B<-c(3,4) 那么我的结果R 应该是c(3-1,3-2,4-1,4-2)。
有了这个sn-p
myfunction <- function(N)
{
A = runif(N)
B = runif(N)
R = c()
for(a in A){
for(b in B){
R=c(b-a,R)
}
}
R
}
print(system.time(result <- myfunction(300)))
这次我明白了
user system elapsed
14.27 0.01 14.39
有没有更快的方法?
【问题讨论】:
-
outer(A, B,-)?见here,引号弄乱了。 -
不错@zx8754,没想到baseR解决方案会这么快!
-
@zx8754 太晚了,我敲了它:-) 这实际上是完全相同的问题,减法等等。
-
@zx8754 谢谢你的复制。我永远找不到它!
-
感谢 Google。但仍然是一个很好的问题和努力。
标签: r for-loop optimization