在R中操作列表

在R中操作列表,r,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 # $ :

我有一个如下列表:

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之前的所有元素都被放入它自己的列表中。我想这不难做到,但我想不出来! 谢谢你的帮助

您可以尝试:

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

为了避免频繁调用
is.na
,可以执行
u=c(na_字符,unlist(x));lapply(split(u,cumsum(is.na(u))),tail,-1)
或其他什么。