2016-12-29 43 views
0

創建數據表,讓我們說我有一個data.table使用循環

DT=data.table(name = sample(letters[1:25],30,replace=T), value =rnorm(3000)) 

我想分裂DT的名稱,並創建新的DTS,如姓名DT_a,對應的名稱值DT_b。那我該怎麼辦呢?

回答

0

試試這個:

DTs = split(DT, DT$name) 
lapply(names(DTs), function(x) assign(paste0('DT_',x), DTs[[x]], envir=.GlobalEnv)) 
+0

Thx的工作! – VincentLin

+0

我有一個問題,爲什麼要添加.globalenv?我試圖刪除它,並返回了錯誤的結果 – VincentLin

+2

沒有它,分配只發生在函數「內部」。同樣的原因,'f = function(){x = 5}; f()'不能創建一個變量'x' – sirallen

0

我們可以使用list2env

lst <-split(DT, DT$name) 
list2env(setNames(lst, paste0("DT_", names(lst))), envir = .GlobalEnv) 

不過,建議保持在一個list,而不是在全球環境中創建多個數據集。但是,如果這只是爲了瞭解創建對象的可能性,則可以使用list2env

+1

Thx,也可以工作 – VincentLin

+0

Downvoter,我剛剛修改了一些建議如果你想改變downvote,歡迎你。 – akrun