在 R 中:如何从字符串加上列名加上分类变量创建数据框名称?

In R: How do I create a dataframe name from a string plus a column name plus categorical variable?

抱歉,这似乎是一个简单的问题,但我找不到答案。

我正在使用关键字组来搜索字符串中的重要短语。我的 table (srchtbl) 按类别(它们所指的一般事物)和成分(动作与描述)对单词进行分类

我的方法要求我深入到向量以提取要搜索的词组。我能够为每个类别名称和每个组件创建向量。

但是,我还想为每个类别命名的数据框制作数据框。

我的数据:

  word    pattern category component  
  <chr>   <chr>   <chr>    <chr>      
1 pack    pack    pkg      action     
2 protect protect pkg      action     
3 well    well    pkg      description
4 clever  clever  pkg      description
5 care    care    pkg      description
6 safe    safe    pkg      description

这些语句使用适当的名称创建适当的数据框:

catgroups <- unique(srchtbl$category)

assign(paste("df_",  catgroups[i], sep = ""), srchtbl %>%  filter(category == catgroups[i]) %>% group_by(component))

很好,但是我如何在不使用整个语句的情况下引用它?如果我使用:

print(paste("df_",  catgroups[3], sep = ""))

[1] "df_pkg"

所以如果不使用整个赋值语句我就无法再次引用它。

是否有另一种方法来连接数据框名称并进行简单赋值,例如:

"string" + catgroups[i] <- srchtbl %>%  filter(category == catgroups[3]) %>% group_by(component))

最终代码会循环,这样关键字 table 可以扩展到任意数量的类别和组件,所以我不想输入单独的数据框名称

考虑基础 R 的 bysplit,它从一个或多个分组中创建一个命名的数据框列表,您可以在其中使用 $[[ 限定符。无需用许多结构相似的对象淹没全局环境。而是维护一个 list 对象。如果存储在 list.

中,您不会失去数据框的任何功能
df_list1 <- split(srchtbl, srchtbl$category)
df_list1$pkg

#      word pattern category   component
# 1    pack    pack      pkg      action
# 2 protect protect      pkg      action
# 3    well    well      pkg description
# 4  clever  clever      pkg description
# 5    care    care      pkg description
# 6    safe    safe      pkg description


dflist2 <- by(srchtbl, srchtbl$category, identity)
dflist2[['pkg']]

#      word pattern category   component
# 1    pack    pack      pkg      action
# 2 protect protect      pkg      action
# 3    well    well      pkg description
# 4  clever  clever      pkg description
# 5    care    care      pkg description
# 6    safe    safe      pkg description