我有一个带有一些NoData值的数字矢量。如何使用NoData作为断点将其拆分为矢量?
示例数据:
set.seed(1)
a <- as.integer(runif(30, 0, 10))
a[1] <- NaN
a[10] <- NaN
> a
[1] NaN 3 5 9 2 8 9 6 6 NaN 2 1 6 3 7 4 7 9 3 7 9 2 6 1 2 3 0 3 8 3
因此输出将按连续向量对数据进行分组:
[1] 3 5 9 2 8 9 6 6
[1] 2 1 6 3 7 4 7 9 3 7 9 2 6 1 2 3 0 3 8 3
答案 0 :(得分:1)
我们可以使用split
split(a, cumsum(is.na(a)))
但是,每个列表的第一个元素可以是NA
,可以用sapply
删除
sapply(split(a, cumsum(is.na(a))), function(x) x[!is.na(x)])
答案 1 :(得分:1)
带有rleid
libary(data.table)
grp <- rleid(is.nan(a))
split(a[!is.nan(a)], grp[!is.nan(a)])
#$`2`
#[1] 3 5 9 2 8 9 6 6
$`4`
#[1] 2 1 6 3 7 4 7 9 3 7 9 2 6 1 2 3 0 3 8 3