【问题标题】:How to stack elements of a character list in R如何在R中堆叠字符列表的元素
【发布时间】:2019-09-02 05:24:22
【问题描述】:

我有 3 个要堆叠的字符列表。

我尝试了 rbind()、rbindlist()、bind_rows(),但我没有获得正确的最终结构。

我原来的角色列表是这样的:

list1 = list("16403074 L3 2", "16603059 L3 2")
list2 = list("0 1", "0 1")
list3 = list("1.7 0.75514 -1.62403 0.06183" ,"1.7 0.42851 0.52817 0.08137")

我希望最终输出如下所示:

"16403074 L3 2"
"0 1"
"1.7 0.75514 -1.62403 0.06183"
"16603059 L3 2" 
"0 1"
"1.7 0.42851 0.52817 0.08137" 

所以每个列表对应的元素都是堆叠起来的。

【问题讨论】:

  • 使用unlist(c(list1, list2, list3))
  • @clemens,它做了不同的事情。

标签: r


【解决方案1】:

假设每个列表的长度相同,我们可以使用

unlist(matrix(c(list1, list2, list3), , 2, byrow = TRUE))
# [1] "16403074 L3 2"                "0 1"                          "1.7 0.75514 -1.62403 0.06183"
# [4] "16603059 L3 2"                "0 1"                          "1.7 0.42851 0.52817 0.08137" 

第一次构造的诀窍在哪里

matrix(c(list1, list2, list3), , 2, byrow = TRUE)
#      [,1]                           [,2]                         
# [1,] "16403074 L3 2"                "16603059 L3 2"              
# [2,] "0 1"                          "0 1"                        
# [3,] "1.7 0.75514 -1.62403 0.06183" "1.7 0.42851 0.52817 0.08137"

替代方案是

unlist(do.call(rbind, list(list1, list2, list3)))
unlist(data.table::rbindlist(list(list1, list2, list3)))

【讨论】:

  • unlist(do.call(rbind, list(list1, list2, list3))) 成功了。谢谢!
【解决方案2】:

您可以使用tidyr 中的unnest(),这是tidyverse 的一部分:

library(tidyverse)

list1 = list("16403074 L3 2", "16603059 L3 2")
list2 = list("0 1", "0 1")
list3 = list("1.7 0.75514 -1.62403 0.06183" ,"1.7 0.42851 0.52817 0.08137")

data <- tibble(strings = c(list1, list2, list3))

data %>%
 unnest()

【讨论】:

  • unnest()tidyr
【解决方案3】:

你在寻找这样的东西吗 -

> cat(paste(unlist(c(list1, list2, list3))), sep="\n")

> writeLines(paste(unlist(c(list1, list2, list3))), sep="\n")

16403074 L3 2
16603059 L3 2
0 1
0 1
1.7 0.75514 -1.62403 0.06183
1.7 0.42851 0.52817 0.08137

【讨论】:

  • 不,我正在寻找要堆叠的每个列表的第一个元素,然后是要堆叠的每个列表的第二个元素...
猜你喜欢
  • 1970-01-01
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-06-25
  • 1970-01-01
  • 2021-09-21
相关资源
最近更新 更多