【问题标题】:Combine list and element from 2nd list while maintaining names in R结合第二个列表中的列表和元素,同时在 R 中保持名称
【发布时间】:2018-11-18 21:26:33
【问题描述】:

我想将一个包含多个元素的列表与第二个列表中的一个元素结合起来。 但是,在这样做时,我想维护一个合理的元素名称字符串。

我尝试了How to combine two lists in R 的方法,但它们不起作用。

例子:

l1 <- list(foo = 1:5, bar = 1:5)
l2 <- list(abc = 1:5, xyz = 1:5)
l3 <- list(cat = 1:5, dog = 1:5)

我想要什么:

$foo
[1] 1 2 3 4 5

$bar
[1] 1 2 3 4 5

$abc
[1] 1 2 3 4 5

$cat
[1] 1 2 3 4 5

$dog
[1] 1 2 3 4 5

尝试:

c(l1,l2,l3) #works fine if I want all elements from all lists (but I don't)

## My Other Attempts ##
  c(l1,l2[['abc']],l3)
  c(l1,abc = l2[['abc']],l3)

#But both don't work:

> c(l1,l2[['abc']],l3) 
$foo
[1] 1 2 3 4 5

$bar
[1] 1 2 3 4 5

[[3]]
[1] 1

[[4]]
[1] 2

[[5]]
[1] 3

[[6]]
[1] 4

[[7]]
[1] 5

$cat
[1] 1 2 3 4 5

$dog
[1] 1 2 3 4 5

> c(l1,abc = l2[['abc']],l3) 
$foo
[1] 1 2 3 4 5

$bar
[1] 1 2 3 4 5

$abc1
[1] 1

$abc2
[1] 2

$abc3
[1] 3

$abc4
[1] 4

$abc5
[1] 5

$cat
[1] 1 2 3 4 5

$dog
[1] 1 2 3 4 5

我知道必须有一个简单的解决方案!

【问题讨论】:

    标签: r list concatenation


    【解决方案1】:

    你必须使用[] 不是 [[]]

    l1 <- list(foo = 1:5, bar = 1:5)
    l2 <- list(abc = 1:5, xyz = 1:5)
    l3 <- list(cat = 1:5, dog = 1:5)
    
    c(l1,l2['abc'],l3)
    

    结果:

    $foo
    [1] 1 2 3 4 5
    
    $bar
    [1] 1 2 3 4 5
    
    $abc
    [1] 1 2 3 4 5
    
    $cat
    [1] 1 2 3 4 5
    
    $dog
    [1] 1 2 3 4 5
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-11-29
      • 1970-01-01
      • 2020-07-08
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 2014-04-09
      • 2020-01-25
      相关资源
      最近更新 更多