2016-11-18 40 views
-1

我與它唯一值的數據幀如下grep來產生多個dataframes

red 
green 
blue 
yellow 

我有顏色和其他列的另一數據框如下

red  1  4 
green  2  4 
blue  2  5 
yellow  1  7 
red  54  35 
green  25  54 
blue  33  66 
yellow  63  63 
blue  22  99 
yellow  80  25 
red  26  33 
green  16  17 

我需要創建數據幀,這些數據幀是用每種顏色剔除行的結果(用顏色命名的數據框,例如:

dfred 
red  1  4 
red  54  35 
red  26  33 
dfyellow 
yellow  1  7 
yellow  63  63 
yellow  80  25 

dfblue 
blue  2  5 
blue  33  66 
blue  22  99 

dfgreen 
green  2  4 
green  25  54 
green  16  17 

我可以一個接一個地想一個更簡單的方法。這可以在一個函數中完成嗎?

我真的不知道該怎麼給每個grep的短語代入一個函數,將輸出這樣的命名數據框

回答

2

我們可以split這樣做是爲了創建一個listdata.frame小號

lst <- split(df2, as.character(df2$col1)) 
names(lst) <- paste0('df', names(lst)) 

然後用list2env創建全球環境,爲U中的個別對象(不推薦雖然)

list2env(lst, envir = .GlobalEnv) 
dfred 
# col1 col2 col3 
#1 red 1 4 
#5 red 54 35 
#11 red 26 33 
+1

蜱分割並重命名結果。不太確定在我的情況下創建個人對象,但謝謝 –