【问题标题】:Combining named lists in R, taking only one value from each在 R 中组合命名列表,每个列表只取一个值
【发布时间】:2018-04-11 15:59:44
【问题描述】:

简单的问题,但我似乎找不到答案:

我有两个名称重叠的列表。对于给定名称,两个列表将始终具有相同的值,如下所示:

list1 ->

  $col_a
  [1] "a"

  $col_b
  [1] "b"

  $col_c
  [1] "c"

list2 ->

  $col_b
  [1] "b"

  $col_c
  [1] "c"

  $col_d
  [1] "d"

将它们组合起来,如this answer,给了我以下信息:

$col_a
[1] "a"

$col_b
[1] "b" "b"

$col_c
[1] "c" "c"

$col_d
[1] "d"

相反,我想:

$col_a
[1] "a"

$col_b
[1] "b"

$col_c
[1] "c"

$col_d
[1] "d"

我该怎么做?

【问题讨论】:

  • ?modifyList ..
  • 你的意思是lst <- c(list1, list2); lst[!duplicated(lst)]
  • @rawr,我每天都学到新东西。坦率地说,我从没想过要寻找那个功能,但它的实用性是一成不变的。
  • @akrun,效果很好,谢谢
  • 您说“两个列表对于给定名称将始终具有相同的值”,但它们不会对于两个不同的名字?如果不是,那么@akrun 的建议可能不是您想要的。例如,对于list1 <- list(a = 1)list2 <- list(b = 1),结果为list(a=1)。而我在下面的回答在这种情况下给出了list(a = 1, b = 1)

标签: r


【解决方案1】:

如果我理解您的要求,您可以从第一个列表中取出所有元素,并将它们与第二个列表中名称未出现在第一个列表中的所有元素结合起来:

c(list1, list2[!(names(list2) %in% names(list1))])

【讨论】:

    猜你喜欢
    • 2014-08-05
    • 2019-07-13
    • 1970-01-01
    • 1970-01-01
    • 2021-02-21
    • 1970-01-01
    • 1970-01-01
    • 2022-01-09
    • 2021-11-29
    相关资源
    最近更新 更多