Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/82.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 如何为向量中的每个元素计算另一个向量中较小元素的分数? n_Optimization_R_Loops_Performance - Fatal编程技术网

Optimization 如何为向量中的每个元素计算另一个向量中较小元素的分数? n

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

我并不想开玩笑,但这些都是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 <- 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)