【问题标题】:Unpacking a vector into a list with each element of vector as separate elements in list将向量解包到列表中,向量的每个元素作为列表中的单独元素
【发布时间】:2012-06-09 12:12:22
【问题描述】:

使用以下代码,我正在创建一个列表:

scales <- c(p="hye", r="t3")
details <- list(t=20,y="c", scales)

目前上面给了我一个这样的清单:

$t
[1] 20

$y  
[1] "c"

[[3]]
p     r 
"hye"  "t3"

但是我想要这样的列表:

$t
[1] 20

$y  
[1] "c"

$p      
[1] "hye"  

$r
[1] "t3"

由于这将在函数中重复使用,我想将scales 保留为向量参数,然后我可以将其插入到列表中。我该怎么做?

【问题讨论】:

    标签: r list concatenation


    【解决方案1】:

    解决办法是:

    details = c(list(t=20,y="c"),scales)
    

    【讨论】:

    • 您可能想让答案更像是一个陈述而不是评论/问题。如果您不确定它是否有效,则不会引起信心——确实如此。 +1 不需要as.list()..
    • “这行得通吗?”本来是修辞的,例如“这是您正在寻找的解决方案吗?”不过好点。我以后会更直率的:)
    【解决方案2】:

    您想连接 vis c() 两个列表,因此在形成 details 之前使用 as.list()scales 向量转换为列表:

    > details <- c(list(t=20, y="c"), as.list(scales))
    > details
    $t
    [1] 20
    
    $y
    [1] "c"
    
    $p
    [1] "hye"
    
    $r
    [1] "t3"
    

    【讨论】:

    • 这似乎更合乎逻辑,但 @TimP 也有效(没有明确的as.list)加上首先回答,所以我会接受这个答案。谢谢
    • 酷。是的,这里不需要as.list,因为c() 的结果无论如何都会是一个列表。
    • @TimP 重复是的,几乎,但不是故意的;我们正在同时处理这些问题 - 它确实发生了。
    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    • 2019-05-28
    相关资源
    最近更新 更多