我有一个如下所示的列表:
mylist <- list("a", "b", "c", NA, "d", "e", "f", NA, "g", "h", "i", NA, "j", "k", "l", NA,
"m", "n", "o", NA, "p", "q", "r", NA, "s", "t", "u", NA, "v", "w", "x", NA,
"y", "z")
str(mylist)
# List of 34
# $ : chr "a"
# $ : chr "b"
# $ : chr "c"
# $ : logi NA
# $ : chr "d"
# $ : chr "e"
# $ : chr "f"
# $ : logi NA
# $ : chr "g"
[list output truncated]
我希望它看起来像这样:
str(mylist)
$ : chr [1:3] "a" "b" "c"
$ : chr [1:3] "d" "e" "f"
$ : chr [1:3] "g" "h" "i"
[list output truncated]
换句话说,我想要一个列表,其中每个NA之前的所有元素都被制作成自己的列表。我怀疑这并不难,但我无法理解! 谢谢你的帮助。
答案 0 :(得分:5)
你可以尝试:
lapply(split(unlist(x), cumsum(is.na(x))), function(z) z[!is.na(z)])