假设我有一个包含5个元素的list
:
list <- list("A", "B", "C", "D", c("E", "F"))
我试图使用purrr
将其返回到一个简单的字符向量,需要将具有两个字符串的列表元素组合成一个,用分隔符分隔,例如&#39; - &#39;。输出应如下所示:
chr [1:5] "A" "B" "C" "D" "E-F"
我尝试了很多方法,包括paste,paste0,str_c以及我挂起的地方似乎map将函数应用于列表元素的每个字符串而不是字符串组一个元素(当有多个元素时)。我得到的结果是:
list2 <- unlist(map(list, str_flatten))
str(list2)
返回:
chr [1:5] "A" "B" "C" "D" "EF"
我需要在E和F之间使用连字符:
chr [1:5] "A" "B" "C" "D" "E-F"
当我尝试将一个函数作为parenthetiinton传递给str_flatten()
时,例如str_flatten(list, collapse = "-")
,它不起作用。最大的问题是我无法弄清楚要在str_flatten中作为参数传递的字符串,以便将列表中给定元素的两个字符串分组。
答案 0 :(得分:3)
你几乎拥有它。尝试
library(purrr)
library(stringr)
unlist(map(lst, str_flatten, collapse = "-"))
#[1] "A" "B" "C" "D" "E-F"
您也可以使用map_chr
map_chr(lst, str_flatten, collapse = "-")
没有额外的套餐,感谢@ G.Grothendieck,你可以做到
sapply(lst, paste, collapse = "-")
数据强>
lst <- list("A", "B", "C", "D", c("E", "F"))
答案 1 :(得分:0)
我们还可以使用map_chr
和paste
。
library(purrr)
lst <- list("A", "B", "C", "D", c("E", "F"))
map_chr(lst, ~paste(.x, collapse = "-"))
# [1] "A" "B" "C" "D" "E-F"