【问题标题】:Create list in R with the names and values coming from another list在 R 中使用来自另一个列表的名称和值创建列表
【发布时间】:2020-12-10 15:45:52
【问题描述】:

所以这个问题真的很糟糕,但我想要实现的是:我有以下列表:

list(a = data.frame(foo=1:10, bar=11:20), b = data.frame(foo=1:10, bar=11:20))

我现在要创建的是另一个列表,其内容为:

(list(a=c("foo", "bar"), b=c("foo", "bar")))
$a
[1] "foo" "bar"

$b
[1] "foo" "bar"

但显然我不想硬编码它。我想有一些或多或少简单的答案,但我现在想不出任何答案。命名列表和为对象分配名称仍然让我在 R 中很困惑。所以任何帮助都将非常感激:)

【问题讨论】:

    标签: r dataframe lapply


    【解决方案1】:

    假设您的原始列表是“l”,您可以这样做:

    lapply(l, names)
    # $a
    # [1] "foo" "bar"
    # 
    # $b
    # [1] "foo" "bar"
    

    ?names,您得到描述:“获取或设置对象名称的函数。”

    原始列表中data.frames 的名称由此提取,lapply 保留原始列表的名称。

    【讨论】:

    • 非常感谢!知道会有一个简单的答案!抱歉,只是一个快速的后续问题:为什么这有效? names在这种情况下的作用是什么?
    • @RobinKohrs,如果我的解释编辑成答案有帮助,请告诉我。
    【解决方案2】:

    tidyverse 的选项

    library(purrr)
    map(l, names)
    

    -输出

    #$a
    #[1] "foo" "bar"
    
    #$b
    #[1] "foo" "bar"
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      • 2019-08-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多