我有以下代码来循环遍历序列并选择序列中低于这些值的值,并查找与另一个值的差异。对于大型数据集,这可能需要很长时间。有没有一种方式可以向量化这样的操作,而不必通过循环遍历序列来提高性能?
a <- seq(1, 10, by=0.25)
b <- seq(1, 10, by=1)
c <- vector('list', length(b))
i <- 1
for (n in b){
c[[i]] <- sum(n - a[n >= a])
i <- i + 1
}
data.frame(c)
我尝试使用data.table对数据进行分组并查找差异,但无法弄清如何从每个小于分组值的数值中计算差异。
library(data.table)
min.n <- 1
max.n <- 10
a <- data.table(seq(min.n, max.n, by=0.5))
colnames(a) <- 'a'
b <- seq(min.n+1, max.n+1, by=1)
bins <- findInterval(a$a,b)
a[,bins:= bins+2]
a[, diff:= bins - a]
fin <- A[B, on=.(a<b), mult="last", N * b - cs]
并将NA值设置为零:fin[is.na(fin)] <- 0
- at80