如何基于表中的名称创建筛选的data.frames?

如何基于表中的名称创建筛选的data.frames?,r,dplyr,R,Dplyr,我希望使用名称(表(数据))生成一个变量列表,将过滤器应用于data.frame的子集,但不知道如何为data.frame名称生成唯一值来保存它们 Type <- c("A","A","A","A","A","A","A","A","A", "B","B","B","B","B","B","B","B", "C","C","C","C","C","C","C", "AB","AB","AB","AB","AB") Type <- as.data.f

我希望使用
名称(表(数据))
生成一个变量列表,将过滤器应用于data.frame的子集,但不知道如何为data.frame名称生成唯一值来保存它们

Type <- c("A","A","A","A","A","A","A","A","A",
      "B","B","B","B","B","B","B","B",
      "C","C","C","C","C","C","C",
      "AB","AB","AB","AB","AB")
Type <- as.data.frame(Type)

您可以使用
split
创建列表,并使用
list2env
将数据帧分配给您的全局环境

list2env(split(Type, Type$Type), globalenv())

您能显示预期的输出吗?输出将被分别命名为原始data.frame级别的data.frames过滤。在本例中,筛选的data.frames命名为:A_type、B_type、C_type、AB_type。您的意思是
拆分(type,type$type)
?保存拆分并单独访问data.frames
x@count所说的是这里的典型建议。将DFs毫无理由地扔到全球环境中只会在以后为您带来麻烦。就个人而言,我会说:甚至不要分割原始DF。投票支持优雅和矢量化。这太棒了。我唯一的补充:list2env(split(Type,droplevels(Type$Type)),globalenv())
list2env
通常是非常糟糕的做法。最好把它放在一个盒子里list@DavidArenburg我完全同意。甚至没有分开(正如弗兰克所说)。
library(dplyr)
NamedTypes <- function(data, nametype) {
  data %>% 
    filter(Type == nametype) %>% 
    a <- paste0(nametype, "_type")
}
lapply(type_names, function(x) NamedTypes(Type, x))
list2env(split(Type, Type$Type), globalenv())