最优雅的方式是基于条件将向量分割成n个元素。
每个独立的true块应该进入自己的列表元素。所有的false元素都被丢弃。
例子1:
vec <- c(1:3,NA,NA,NA,4:6,NA,NA,NA,7:9,NA)
cond <- !is.na(vec)
result = list(1:3,4:6,7:9)
例子2:
vec_2 <- c(3:1,11:13,6:4,14:16,9:7,20)
cond_2 <- vec_2 < 10
results_2 = list(3:1,6:4,9:7)
希望能有一个通用的解决方案,适用于向量vec
和相关条件cond
。
我的最佳尝试:
res <- split(vec,data.table::rleidv(cond))
odd <- as.logical(seq_along(res)%%2)
res[if(cond[1])odd else !odd]
NA^ 0
得到了1分。 - Andre Elrico