折叠粘贴列表结构包括 R 中的转义引号和 c()

Collapse pasting a list structure includes escaped quotes and c() in R

如果这是非常基本的,请原谅我,但它让我发疯。

我有一个很大的嵌套列表对象,其中 'leaf' 元素是字符向量。一个简单的表示是:

dummy <- list(c('A', 'B', 'C'))

我只是想用管道分隔符将项目粘贴在一起,如下所示:

paste0('Start > ', paste(dummy, collapse='|'), ' > End')

以便我得到输出

Start > A|B|C > End

但我得到的是

[1] "Start > c(\"A\", \"B\", \"C\") > End"

我有所有这些额外的字符和转义引号。我做错了什么?

即使使用 recursive = FALSE,我也不愿使用 unlist(),因为这会使我的三个字符序列崩溃。

对于您的示例,这有效:

dummy <- list(c('A', 'B', 'C'))

> sprintf('Start > %s > End',paste0(unlist(dummy),collapse = '|'))
[1] "Start > A|B|C > End"

如果您的列表中有多个条目并且您想将它们全部放在同一个管道中,您可以使用相同的方法:

dummy2 <- list(dummy[[1]],c('D','E','F'))

> sprintf('Start > %s > End',paste0(unlist(dummy2),collapse = '|'))
[1] "Start > A|B|C|D|E|F > End"

或者,如果您想将条目分开,请使用 lapply:

> lapply(dummy2, function(x) sprintf('Start > %s > End',paste0(x,collapse = '|')))

[[1]]
[1] "Start > A|B|C > End"

[[2]]
[1] "Start > D|E|F > End"

如果您的 list 中只有一个元素是如图所示的 character 矢量,那么您可以尝试 rapply

rapply(object = dummy,classes = "character",
            function(t){paste0("Start > ",paste(t,collapse = "|")," > End")})