就像问题所说的那样。当向量大小非常大(> 10M 个条目)时,使用基础 R 是否有更快的方法来执行下面的操作?
下面的代码可以工作,但是当向量大小增加时,由于显而易见的原因,它会变慢。在这个特定的例子中,for 循环可能更快,但如果第一个 NA 值距离向量的开头很远,则可能不会...
set.seed(1)
x <- c(rep(NA, 3), sample(c(T,F), size=5e7, replace=T))
min(which(!is.na(x))) #4
假设您有一个向量数字向量和一个包含列和的x
数据框。有没有一种巧妙的方法可以返回一个长度等于的逻辑向量,指示 x 是否至少位于由或定义的一个区间内?df
start
stop
x
start
stop
我处理的实际案例是length(x)
>> nrow(df)
。最简单的方法是使用 for 循环,但我希望有更优雅、运行速度更快的方法。
x <- 1:10
df <- data.frame(start = c(0, 4.5, 6), stop = c(1, 5.5, 8.5))
z <- rep(FALSE, length(x))
for(i in 1:nrow(df)){
z <- z | (df$start[i] <= x & x <= df$stop[i])
}
x[z] # 1 5 6 7 8