2013-07-17 28 views
23

這可能是一個非常簡單的問題。我有一個數據幀列表(df1,df2 .... dfn),即列表中的每個元素都是一個數據幀。所以基本上,列表是這樣創建的:取消列表中的數據框

mylist = list(df1, df2,...., dfn) 

但我怎麼做相反的,也就是不公開,使DF1,DF2等在工作區中獨立存在?

+0

感謝。你是一個心靈感應器嗎? – user702432

+3

問題*應該*,爲什麼你會*要*做到這一點。如果你把所有的df放在一個可愛的列表中,幾乎沒有任何理由需要將它們製作成單獨的對象。你可以將它們作爲你列表的元素。 –

+2

同意Simon。如果你想打電話給他們的名字,最好在名單上列出他們 - 例如'myList = list(df1 = data.frame(...),df2 = data.frame(...),...)'並用'myList [['df1']' – geotheory

回答

50

使用list2env它是專門爲此設計:

從命名列表X,創建環境包含所有列表 組件作爲對象,或從x中的「多指派」轉換爲預先存在的 環境。

所以在這裏:

list2env(mylist ,.GlobalEnv) 
+7

+1我不知道這個函數存在。 –

+0

太棒了!非常感謝。 – user702432

11

你可以簡單地用一個for循環與assign功能一樣,沿着:

# Sample data 
df.list <- list(data.frame(x = 1:3, y = c(10, 20, 30)), 
       data.frame(x = 4:6, y = c(40, 50, 60)), 
       data.frame(x = 7:9, y = c(70, 80, 90))) 

# Write out single data frames 
for (i in seq(df.list)) 
    assign(paste0("df", i), df.list[[i]]) 
+1

真棒解決方案,當你有一個未命名的列表。 – NoThanks

+0

真高雅! –

相關問題