【问题标题】:Define the Output Name in a Function在函数中定义输出名称
【发布时间】:2021-01-06 21:40:36
【问题描述】:

我想手动定义函数的对象/输出的名称。我所拥有的一个非常简单的例子是:

 x <- data.frame(name = c("A", "B", "C"),
                 value = c(50, 20, 100))

 statistics <- function(data, name){
          total <- data %>% mutate(New = value +50)
          assign(paste0(name), data)
 }
 statistics(x, "NewName")

我想运行这个函数并定义要使用的数据和输出的名称。这个想法是为使用的每个数据集创建一个唯一命名的输出。

谢谢!

【问题讨论】:

  • 您的输入参数是data,而您在内部使用x。可以将其更改为 data %&gt;% mutate.. 和 assign(name, data) 另外,您可能需要 envir 来表示 assign

标签: r function


【解决方案1】:

一种方法是使用&lt;- 分配数据,而不是在函数调用中使用assign()。或者您可以使用assign,但您必须指定您希望对象也被分配的环境。如果它留空,它将进入函数环境。 在函数中使用assign() 时需要注意的是,如果它们具有相同的名称,它将覆盖全局环境中的其他对象。所以要小心你的对象名称。

x <- data.frame(name = c("A", "B", "C"),
                value = c(50, 20, 100))

statistics <- function(data){
  data %>% mutate(New = value +50)
}
Newname <- statistics(x)


statistics2 <- function(data, name){
  total <- data %>% mutate(New = value +50)
  assign(paste0(name), total, envir = .GlobalEnv)
}
statistics2(x, "NewName2")

在您的 assign() 中的代码中稍加说明应该是总数而不是数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-02
    • 1970-01-01
    • 1970-01-01
    • 2019-11-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多