R 通过函数将指定的对象保留在工作区中

R 通过函数将指定的对象保留在工作区中,r,function,user-defined-functions,R,Function,User Defined Functions,我试图从一个函数中保留一个指定的对象(构建一个ts函数,开始对一个单变量过程建模,我知道这很简单!)。我很难找到将对象保留在工作区中的方法。仅使用for循环就可以正常工作,但我想参数化以下内容: ts.builder<-function(x,y,z){ for(i in 9:13){ assign(paste(x,i,sep="_"),ts(yardstick[1:528,i], freq=24)) assign(paste(y,i,sep="_"),ts(yardst

我试图从一个函数中保留一个指定的对象(构建一个ts函数,开始对一个单变量过程建模,我知道这很简单!)。我很难找到将对象保留在工作区中的方法。仅使用for循环就可以正常工作,但我想参数化以下内容:

ts.builder<-function(x,y,z){
  for(i in 9:13){
    assign(paste(x,i,sep="_"),ts(yardstick[1:528,i], freq=24))
    assign(paste(y,i,sep="_"),ts(yardstick[529:552,i], freq=24))
    assign(paste(z,i,sep="_"),ts(yardstick[1:552,i], freq=24))
  }
}

ts.builder("yard.book.training","yard.book.small.valid", "yard.book.valid")
ts.builder未经测试(可复制的示例非常有用):

等等。

未经测试(一个可复制的示例帮助很大):


等等。

您可以指定要分配的环境作为全局环境。但是用这种方式生成变量名通常是个坏主意。您应该考虑使用诸如列表这样的结构来包含数据。您可以指定环境为<代码>赋值< /代码>,作为全局环境。但是用这种方式生成变量名通常是个坏主意。你应该考虑使用一个列表之类的结构来包含数据。谢谢马修,这是我用过的第四个答案。我遇到的一个麻烦是将for循环保留在函数中使用。第9-13个变量是需要放入ts对象的变量。这样,我就可以在代码中嵌入arima函数。有没有想过在初始数据框中滚动这些特定位置?啊,我没有刷新。今晚晚些时候我会做这件事。非常感谢如果答案有效,你应该给Matthew打勾。谢谢Matthew,这是我用过的你的第四个答案。我遇到的一个麻烦是将for循环保留在函数中使用。第9-13个变量是需要放入ts对象的变量。这样,我就可以在代码中嵌入arima函数。有没有想过在初始数据框中滚动这些特定位置?啊,我没有刷新。今晚晚些时候我会做这件事。非常感谢。如果答案有效,你应该给马修打勾。
ts.builder <- function() {
  xd <- list()
  yd <- list()
  zd <- list()

  for (i in 9:13) {
    xd[[i]] <- ts(yardstick[1:528,i], freq=24)
    yd[[i]] <- ts(yardstick[529:552,i], freq=24)
    zd[[i]] <- ts(yardstick[1:552,i], freq=24)
  }
  list(yard.book.training=xd, yard.book.small.valid=yd, yard.book.valid=zd)
}

l <- ts.builder()
l$yard.book.training[[9]]