操纵R中的列表

时间:2015-11-02 20:09:11

标签: r

我有一个如下所示的列表:

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之前的所有元素都被制作成自己的列表。我怀疑这并不难,但我无法理解! 谢谢你的帮助。

1 个答案:

答案 0 :(得分:5)

你可以尝试:

lapply(split(unlist(x), cumsum(is.na(x))), function(z) z[!is.na(z)])