【问题标题】:Faster way to do repetitive subsetting of a list [duplicate]对列表进行重复子集的更快方法[重复]
【发布时间】:2017-04-26 05:00:16
【问题描述】:

这是我的第二个问题。这与我在这里的第一个问题有关:Should I use for loop? OR apply?

我正在分析 NHL 选秀数据。看了第一个问题的答案, 我学会了使用拆分:

canucks_year <- split(canucks, canucks$Year)

但我想制作仅包含相应年份数据框的新对象,例如 canucks_2000、canucks_2001。所以,我编码:

canucks_2000 <- canucks_year[["2000"]]
canucks_2001 <- canucks_year[["2001"]]
canucks_2002 <- canucks_year[["2002"]]
canucks_2003 <- canucks_year[["2003"]]

有没有什么神奇的方法可以使用 R 中的某些函数来自动化这个过程?

【问题讨论】:

    标签: r function loops repeat


    【解决方案1】:

    您可以使用名为list2env 的函数,它允许您将列表中的所有元素放入指定的环境中。

    names(canucks_year) = paste0('canucks_', names(canucks_year))
    list2env(canucks_year, envir = .GlobalEnv)
    

    我首先将您列表中的元素从 2000、2001、2002...重命名为 canucks_2000、canucks_2001、canucks_2002...然后使用list2env 将所有元素放入全局环境中。

    【讨论】:

    • 好的,我得到了第一行。我不明白第二行。具体来说,什么是全局环境,为什么要将元素移到那里?谢谢!
    • @JasonJoonWooBaik 全局环境是所有变量、函数和数据集都位于 R 中的主要环境。基本上,每当您创建像 variable = something 这样的新变量(不在函数内部)时,您将其置于您的全球环境中。 list2env 基本上只是获取列表中的所有元素并执行canucks_2000 = canucks_year[["2000"]] 为每个元素
    猜你喜欢
    • 1970-01-01
    • 2015-01-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-30
    • 1970-01-01
    • 2015-10-07
    • 1970-01-01
    相关资源
    最近更新 更多