我有一个带有一些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发布于 2019-10-03 09:14:41
我们可以使用split
split(a, cumsum(is.na(a)))但是,每个列表的第一个元素可以是NA,它可以用sapply删除。
sapply(split(a, cumsum(is.na(a))), function(x) x[!is.na(x)])发布于 2019-10-03 16:08:45
带有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 3https://stackoverflow.com/questions/58215894
复制相似问题