Optimization 如何为向量中的每个元素计算另一个向量中较小元素的分数? n
我并不想开玩笑,但这些都是R设计用来解决的问题类型,而不必做每一次计算-即,使用统计 假设分布是正态分布Optimization 如何为向量中的每个元素计算另一个向量中较小元素的分数? n,optimization,r,loops,performance,Optimization,R,Loops,Performance,我并不想开玩笑,但这些都是R设计用来解决的问题类型,而不必做每一次计算-即,使用统计 假设分布是正态分布 n<-100000 aa<-rnorm(n) bb<-rnorm(n) system.time(lapply(aa, function(z){mean(bb<pnorm(z))})) aa.new您可以使用findInterval功能: aa.new <- sample(aa, 1000) bb.new <- sample(bb, 1000) x
n<-100000
aa<-rnorm(n)
bb<-rnorm(n)
system.time(lapply(aa, function(z){mean(bb<pnorm(z))}))
aa.new您可以使用findInterval
功能:
aa.new <- sample(aa, 1000)
bb.new <- sample(bb, 1000)
x <- lapply(aa.new, function(z){mean(bb.new<pnorm(z))})
x <- unlist(x)
mean(x)
n如果你只想要比例“
n <- 25000
aa <- rnorm(n)
bb <- rnorm(n)
system.time(q1 <- lapply(aa, function(z){mean(bb<pnorm(z))}))
# user system elapsed
# 20.057 2.544 22.807
system.time(q2 <- findInterval(pnorm(aa), sort(bb))/n)
# user system elapsed
# 0.020 0.000 0.021
all.equal(as.vector(q1, "numeric"), q2)
# [1] TRUE
bbs只是一个小评论:为什么不在函数之外创建pnorm(z)
?也就是说,aa@Bernd或lappy(pnorm(aa),function(z){mean(bbFantastic!我以前从未遇到过findInterval函数。@Ian这让我想起了什么。作者描述:“你知道base R中有多少函数吗?你知道有多少函数你不知道吗?运行unk()
来发现未知的未知。它既快又有趣!”
bbs <- sort(bb)
zz <- findInterval(aa, bbs)
zz <- zz/length(aa)