2017-04-26 40 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