首页 > 解决方案 > 参数化全局环境中输出数据帧的名称,分配给函数

问题描述

尝试将我希望它命名为它创建的数据框的函数传递给函数,然后将其保存到全局环境中。

我正在尝试通过过滤值来自动创建作为其他数据帧子集的数据帧;因为我正在创建其中的 43 个,所以我正在编写一个可以自动执行的函数:

我可以做到 a) 很好,但在 b) 方面遇到了麻烦。

假设我有一个数据集,其中包含一个名为“团队”的列(详细说明该成员所属的团队):

original.df <- read_csv("../original_data_set")

我创建了一个函数来根据其中一列中的值拆分该数据集......

split.function <- function(string){
    x <- original.df
    as.name(string) <<- filter(x, str_detect(`Team`, string))
}

...然后使用名称保存数据框:

split.by.candidate('Team.Curt')

我不断得到:

> Error in as.name(x) <<- filter(y, str_detect(`Receiving Committee`, x)) : 
  object 'x' not found

但是当我使用包含术语的行执行此操作时,我只想在我的全局环境中看到Team.Curt保存为 data.frameTeam.Curt

标签: r

解决方案


您可以使用assign基于字符串创建对象:

split.function <- function(string){
   x <- original.df
   assign(string, filter(x, str_detect(`Team`, string)), envir = .GlobalEnv)
}

在这里,envir = .GlobalEnv用于将值分配给全局环境。


推荐阅读