【问题标题】:Create and return variable with included argument name创建并返回包含参数名称的变量
【发布时间】:2018-07-01 01:58:18
【问题描述】:

我有一个返回平均时间序列的函数(使用包hydroTSM)。 但是,我不仅想输出平均值,还想创建一个具有指定名称(“d2m”+参数名称)的变量,这样我以后可以访问这些值。到目前为止,这就是我想出的。

d2m = function(var) {
    d2m = daily2monthly(var, FUN = mean)
    assign(paste('d2m', var, sep = ''), d2m)
    }

我还不能创建输出变量。对于函数参数 var=123 我应该得到一个名为 d2m123 的变量,其时间序列作为值。谢谢。

【问题讨论】:

标签: r function assign


【解决方案1】:

我使用 xts 对象作为函数参数为我工作:

d2m = function(var) {
  d2m = daily2monthly(var, FUN = mean)
  varName<-deparse(substitute(var))
  assign(paste("d2m", varName, sep = ""), d2m, envir = globalenv())
}

【讨论】:

    【解决方案2】:
    d2m <- function(var) {
      d2m <- daily2monthly(var, FUN = mean)
      assign(paste("d2m", var, sep = ""), d2m, envir = globalenv())
    }
    

    【讨论】:

      【解决方案3】:

      很少需要像这样分配变量 - 我建议您可能希望使用其他类型的数据结构来存储函数调用的结果,例如列表(请参阅 SO 问题 Why is using assign bad?更全面的讨论)。

      要回答您的问题,您正确分配了一个变量,但它仅在函数的范围内。如果您阅读了有关 assign 的帮助(在控制台中键入 ? assign),您将看到 envir 参数的详细信息。如果您想从调用它的任何位置查看值,则需要指定 .GlobalEnv

      d2m = ...
        assign(paste('d2m', var, sep = ''), d2m, envir = .GlobalEnv)
      

      但如前所述,我建议您多考虑一个合适的数据结构来存储您的函数调用结果。

      【讨论】:

        猜你喜欢
        • 2021-12-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-09-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多