更快地对列表进行重复子集化

Faster way to do repetitive subsetting of a list

这是我的第二个问题。这与我在这里的第一个问题有关:

我正在分析 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 中的某些函数来自动执行此过程吗?

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

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

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