R比较不等向量与不等式

R比较不等向量与不等式,r,for-loop,vectorization,apply,inequality,R,For Loop,Vectorization,Apply,Inequality,我有两个长度不等的单矢量数据帧 aa<-data.frame(c(2,12,35)) bb<-data.frame(c(1,2,3,4,5,6,7,15,22,36)) aaaa我原来的帖子我已经找了很多次了 在我的例子中 aa<-data.frame(c(2,12,35)) bb<-data.frame(c(1,2,3,4,5,6,7,15,22,36)) x<-ecdf(bb[,1]) x(2) [1] 0.2 x(12) [1] 0.7

我有两个长度不等的单矢量数据帧

aa<-data.frame(c(2,12,35))
bb<-data.frame(c(1,2,3,4,5,6,7,15,22,36))

aa
aa我原来的帖子我已经找了很多次了
在我的例子中

aa<-data.frame(c(2,12,35))
bb<-data.frame(c(1,2,3,4,5,6,7,15,22,36))

 x<-ecdf(bb[,1])

 x(2)

[1] 0.2

 x(12)

[1] 0.7

 x(35)

[1] 0.9

aa它们必须是数据帧吗?为什么不仅仅是向量?你试过
sapply(aa[[1]],函数(x)sum(bb[[1]]吗向量很好,我的初始数据是在一个数据帧中,但如果可以在两个向量上完成,那就太好了。它成功了!在我的机器上大约30分钟。你有什么理由选择更好的方法吗?我对R是新手,正在尝试从我的错误中学习!谢谢看
Rprof(…)
总结(…)
用于分析代码。很有趣。我得到一个错误:无法分配大小为10.1 Gb的向量,这是以前从未发生过的。您查看过
数据表吗?我只是在0.32秒内完成的。不确定您的意思。data.table用于什么?应用cdf_land函数?不,只是数据表。我作为.data.ta运行了
ble(陆上高度)[,vapply(.I,“>”,水上高度[[1]],1)]
而且速度非常快
fun1<-function(a,b){k<-colSums(b<a)
                    k<-k*.000058242}

system.time(replicate(5000,data.frame(apply(aa,1,fun1,b=bb))))
       user  system elapsed 
      3.813   0.011   3.883 
fun2<-function(a,b){k<-length(which(b<a))
                    k<-k*.000058242}

system.time(replicate(5000,data.frame(apply(aa,1,fun2,b=bb))))
   user  system elapsed 
  3.648   0.006   3.664 
aa<-data.frame(c(2,12,35))
bb<-data.frame(c(1,2,3,4,5,6,7,15,22,36))
sapply(aa[[1]],function(x)sum(bb[[1]]<x))
# [1] 1 7 9
n  <- 1.6e3
bb <- sample(1:n,1.7e6,replace=T)
aa <- 1:n
system.time(sapply(aa,function(x)sum(bb<x)))
#    user  system elapsed 
#   14.63    2.23   16.87 

n  <- 1.6e4
bb <- sample(1:n,1.7e6,replace=T)
aa <- 1:n
system.time(sapply(aa,function(x)sum(bb<x)))
#    user  system elapsed 
#  148.77   18.11  167.26 
aa<-data.frame(c(2,12,35))
bb<-data.frame(c(1,2,3,4,5,6,7,15,22,36))

 x<-ecdf(bb[,1])

 x(2)

[1] 0.2

 x(12)

[1] 0.7

 x(35)

[1] 0.9
land_elevation <- data.frame(rnorm(1e6))
water_elevation<- data.frame(rnorm(1e6))

cdf_land<- ecdf(land_elevation[,1])

elevation_seq <- seq(from = min(water_elevation[,1]), to = max(water_elevation[,1]), length.out = 1000)

land                  <- sapply(elevation_seq, cdf_land)