grep从列表中生成多个数据帧

时间:2016-11-18 11:21:07

标签: r

我的数据框中包含唯一值,如下所示

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短语替换为输出这样一个命名数据帧的函数

1 个答案:

答案 0 :(得分:2)

我们可以使用split创建list data.frame

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

然后使用list2env在全局环境中创建单个对象(不推荐使用)

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