请原谅我,如果这是非常基本的,但它让我发疯。
我有一个大型的嵌套列表对象,其中' 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(),因为这会折叠我的三个字符序列。
答案 0 :(得分:2)
对于您的示例,这有效:
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"
答案 1 :(得分:0)
如果list
中只有一个元素是character
向量,则可以尝试rapply
。
rapply(object = dummy,classes = "character",
function(t){paste0("Start > ",paste(t,collapse = "|")," > End")})