2017-04-26 59 views
1

这是我的第二个问题。这与我的第一个问题在这里有关: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中的某些功能来自动执行此过程?

回答

2

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

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

我第一次改名列表的元素从2000年,2001年,2002年,...到canucks_2000,canucks_2001,canucks_2002,...然后用list2env把所有元素融入到全球环境。

+0

好吧,我得到第一行。我不明白第二行。具体来说,什么是全球环境,您为什么要移动那里的元素?谢谢! –

+0

@JasonJoonWooBaik全局环境是所有变量,函数和数据集均位于R中的主要环境。基本上,无论何时创建一个像'variable = something'这样的新变量(不在函数内部),您都将它放置在您的全球环境。 'list2env'基本上只是取得你列表中的所有元素,并对每个元素执行'canucks_2000 = canucks_year [[“2000”]] _。 – useR