首页 > 解决方案 > 在函数中定义输出名称

问题描述

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

 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")

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

谢谢!

标签: rfunction

解决方案


一种方法是仅使用<-而不是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()说明应该说总而不是数据。


推荐阅读