如何用purrr将含多字符串的R列表元素拼接为指定格式字符向量
嘿,你已经快搞定啦!问题的核心就是给str_flatten正确传递collapse参数就行~
你之前的代码里,map(list, str_flatten)没有指定分隔符,所以默认用空字符串拼接,才得到了"EF"。只要在map里把collapse="-"作为额外参数传给str_flatten,就能实现你想要的效果,甚至还可以用map_chr直接得到字符向量,省去unlist的步骤:
library(purrr) library(stringr) # 你的原始列表 my_list <- list("A", "B", "C", "D", c("E", "F")) # 正确的处理代码 result <- map_chr(my_list, str_flatten, collapse = "-") # 查看结果 str(result)
执行后就会得到你预期的输出:
chr [1:5] "A" "B" "C" "D" "E-F"
简单解释下为什么这样可行:
map_chr会遍历列表的每个元素,把每个元素(不管是单个字符串还是字符串向量)都传给str_flatten函数str_flatten的collapse参数专门用来定义多个字符串拼接时的分隔符,这里指定为"-",就会把长度为2的元素c("E","F")拼成"E-F"- 对于单个字符串的元素,
str_flatten会直接返回原字符串,不会做额外拼接,完美符合你的需求
内容的提问来源于stack exchange,提问作者mrwaws
相关产品推荐
相关产品推荐

