如何折叠列表中的所有字符向量

Seb*_*eki 1 r

我有一个带有特定列的数据框,该列由字符列表组成,如下所示:

a <- list("dyspla", c("dyspla", "dyspla"), "carcin",
          c("tumour", "dyspla"), character(0), character(0),
          c("carcin", "dyspla"), character(0), character(0), "dyspla")
Run Code Online (Sandbox Code Playgroud)

我希望它是一个字符向量,列表中的字符向量如下折叠

c("dyspla","dyspla,dyspla","carcin","tumour,dyspla","carcin,dyspla","dyspla")
Run Code Online (Sandbox Code Playgroud)

paste(a,collapse=" ") 一起崩溃 如何在列表中按向量折叠?

Jaa*_*aap 5

可能的解决方案:

sapply(a[!!lengths(a)], toString)
Run Code Online (Sandbox Code Playgroud)

或具有purrris_empty功能:

sapply(a[!sapply(a, purrr::is_empty)], toString)
Run Code Online (Sandbox Code Playgroud)

两者都给:

[1] "dyspla"         "dyspla, dyspla" "carcin"         "tumour, dyspla" "carcin, dyspla" "dyspla"
Run Code Online (Sandbox Code Playgroud)

或者使用paste

sapply(a[!sapply(a, purrr::is_empty)], paste, collapse = ',')
Run Code Online (Sandbox Code Playgroud)

针对您的评论:

如果要保留空字符,可以执行sapply(a, toString)sapply(a, paste, collapse = ',')