使用包含的参数名称

时间:2018-01-22 12:23:33

标签: r function assign

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

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

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

3 个答案:

答案 0 :(得分:0)

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

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

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

但如上所述,我建议您更多地考虑使用合适的数据结构来存储函数调用结果。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

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