我有一个函数返回平均时间序列(使用包hydroTSM)。但是,我不仅要输出平均值,还要创建一个具有指定名称的变量(“d2m”+参数名),以便以后可以访问这些值。这就是我到目前为止得出的结论。
d2m = function(var) {
d2m = daily2monthly(var, FUN = mean)
assign(paste('d2m', var, sep = ''), d2m)
}我还无法创建输出变量。对于函数参数var=123,我应该得到一个名为d2m123的变量,其值为timeseries。谢谢。
发布于 2018-01-22 13:09:02
d2m <- function(var) {
d2m <- daily2monthly(var, FUN = mean)
assign(paste("d2m", var, sep = ""), d2m, envir = globalenv())
}发布于 2018-01-22 13:07:17
很少有必要分配这样的变量--我建议您可能希望使用其他类型的数据结构来存储函数调用的结果,例如列表(更详细的讨论请参见因此问题Why is using assign bad? )。
要回答您所要求的内容,您需要正确地赋值一个变量,但它只是函数中的作用域。如果您阅读“赋值帮助”(在控制台中键入? assign ),您将看到环境参数的详细信息。如果您想从调用它的任何地方看到值,则需要指定.GlobalEnv:
d2m = ...
assign(paste('d2m', var, sep = ''), d2m, envir = .GlobalEnv)但是,如前所述,我建议您更多地考虑适当的数据结构,以存储函数调用结果。
发布于 2018-01-22 13:16:57
我使用xts对象作为函数参数来工作:
d2m = function(var) {
d2m = daily2monthly(var, FUN = mean)
varName<-deparse(substitute(var))
assign(paste("d2m", varName, sep = ""), d2m, envir = globalenv())
}https://stackoverflow.com/questions/48381547
复制相似问题