功能输入无法识别 - 本地和全球环境问题

时间:2018-04-23 17:51:10

标签: r function dplyr environment

我正在编写一个功能,将我经常采用时间序列数据的操作组合在一起。我已经在脚本中包含了我正在使用的所有库,因为我认为我的问题可能与plyr / dplyr(正确)关于每个变量的环境有关。

第一个功能效果很好,但是当进入第二个功能时,R不会将输入识别为' x',但会吐出错误:' eval中的错误( predvars,data,env):object' x'没找到。'

为什么会这样?

library(plyr)
library(dplyr)
library(caret)
library(xts)
library(forecast)
library(imputeTS)
library(lubridate)

x1 = arima.sim(list(order = c(0,1,0)), n = 119)

timetrend <- function(x, starts, ends, frequency) { 
  y <- list()
  y[[1]] <- ts(x, start = starts, end = ends, frequency = frequency)
  y[[2]] <- decompose(y[[1]])
  y[[3]] <- y[[1]] - y[[2]]$seasonal - y[[2]]$random
  return(y)
}

plottime <- function(x) { #takes a timetrend list as input
  t <- tslm(x[[3]] ~ trend)
  plot(x[[3]])
  lines(t$fitted.values)
  return(t)
}

使用此处的函数

result <- timetrend(x = x1,
                  starts = c(2000, 01, 01), ends = c(2009, 12, 01), frequency = 12)


plottime(x = result)

1 个答案:

答案 0 :(得分:2)

我可以使用以下代码。

plottime <- function(x) { #takes a timetrend list as input
  y=x[[3]]
  t <- tslm(formula = y ~ trend)
  plot(x[[3]])
  lines(t$fitted.values)
  return(t)
}

enter image description here

不确定为什么会发生这种情况,也许在公式参数中使用索引x [[3]]是个问题?