如何使用我的 UDF 输入来命名我的输出数据框?

How can I use my UDF input to name my output dataframe?

我正在尝试使用 assign() 函数将我的输入之一用作我创建的 UDF 返回的数据帧的一部分,但它不起作用。没有错误,但在 UDF 中创建的数据框未存储在我的全局环境中。我的代码类似如下:

read_report <- function(id) {
  assign(paste0("extract_", id),
         read_excel(path = 
                      paste0(path, "_", id, ".xlsx"), 
                    sheet = 1
         )
  )
}

它在函数之外工作得很好,所以我不确定我做错了什么。例如,当我 运行 read_report(1022) 时,我没有得到名为 extract_1022 的数据框。我也试过把 return(paste0("extract_",id)) 放在最后无济于事。

感谢您的帮助!谢谢:)

assign中指定环境,因为默认情况下,对象是在函数的本地环境中创建的,无法在函数外部访问。

read_report <- function(id) {
    assign(paste0("extract_", id), 
        readxl::read_excel(path = paste0(path, "_", id, ".xlsx"), sheet = 1), 
        envir = .GlobalEnv)
}