我想编写一个创建时间序列的函数,但我希望它能够在调用中生成时间序列的名称。
排序
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
并返回它),但是有没有办法让它能用于一个函数调用?
谢谢!
答案 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