我可以在R中创建一个函数返回一个命名对象吗?

时间:2015-01-27 10:24:10

标签: r function return-type

我想编写一个创建时间序列的函数,但我希望它能够在调用中生成时间序列的名称。

排序

makeTS(my.data.frame, string(dateName), string(varName)){
-create time series tsAux from my.data.frame, dateName and varName
-create string tsName
(-the creation of tsAux is not a problem)
assign(tsName, tsAux)
return(tsName)
} 

这也许并不奇怪,返回字符串tsName,但有什么方法可以让它返回一个命名对象?

我已经尝试了

do.call('<-', list(tsName, tsAux))

我也尝试过使用

as.name(tsName) <- tsAux

但似乎没有任何效果。

我知道

tsName <- makeTS2(my.data.frame, dateName, varName) 

可以做到这一点(其中makeTS2()只生成时间序列tsAux并返回它),但是有没有办法让它能用于一个函数调用?

谢谢!

2 个答案:

答案 0 :(得分:8)

可以吗?肯定的是:

makeTS <- function(dat, varName) {
  result <- NA
  assign( varName, result, envir = .GlobalEnv )
  result
}

> makeTS(NA, "test")
[1] NA
> test
[1] NA

应该你呢?几乎肯定没有。

答案 1 :(得分:1)

Ari B.'答案很好。您还可以将assign()与变量一起使用。

> makeTS <- function(dat) {
+   return(666)
+ }
> varName <- "tmp"
> tmp
Error: object 'tmp' not found
> assign(varName, makeTS(1))
> tmp
[1] 666