组合 R 中列表列表中的元素

问题描述

我有一个名为 samples_ID 的列表,其中包含 116 个向量,每个向量包含三个元素,如下所示:

"11"         "GT20-16829" "S27"

我想保留 116 个向量,但像这样将元素组合成一个元素

"11_GT20-16829_S27"

我试过这样的事情

samples_ID_ <- paste(samples_ID,collapse = "_")

它返回一个向量,下面只是其中的一部分:

..._c(\"33\",\"GT20-16846\",\"S24\")_c(\"33\",\"GT20-18142\",\"S72\")_c(\"34\",\"GT20-16819\",\"S50\")_c...

我做错了什么? 你能帮我吗? 谢谢

解决方法

一个 tidyverse 选项。

library(stringr)
library(purrr)

map(samples_ID,~ str_c(.,collapse = '_'))

# [[1]]
# [1] "11_GT20-16829_S27"
# 
# [[2]]
# [1] "12_GT20-16830_S28"

数据

samples_ID <- list(c("11","GT20-16829","S27"),c("12","GT20-16830","S28"
))
,

base R中,我们可以使用sapply

sapply(samples_ID,paste,collapse="_")
,

使用 paste 的另一个基本 R 选项

do.call(paste,c(data.frame(t(list2DF(samples_ID))),sep = "_"))

do.call(paste,data.frame(do.call(rbind,samples_ID)),sep = "_"))