【问题标题】:Error: could not find function plot in R错误:在 R 中找不到函数图
【发布时间】:2017-07-29 00:33:42
【问题描述】:

我试图通过使用我自己的函数“foo”来估计 ARIMA 模型。错误代码在 R 中找不到函数图无处可寻。真的很困扰我。知道这是怎么发生的吗?我试过stats:::plot 还是不行。

```{r warning=FALSE, message=FALSE}
require(forecast)
foo <- function(N, y1=1, p=0.8, q=1-p, seed=NULL, stepwise=TRUE, verbose=0) {
if (!is.null(seed)) set.seed(seed)
y <- c(y1, rep(NA,N-1))
for (i in 2:N) y[i] <- p*y[i-1] + q*rnorm(1)
if (verbose) plot(y, type='l', xlab='time')
return (list(y=y, aa=auto.arima(y, stepwise=stepwise)))
}
v <- foo(N=100, seed=10, verbose=1); v$aa$coef
```

【问题讨论】:

  • search() 放在plot 调用之前,并确保package:stats 在你的调用树上
  • @MichaelChirico 谢谢。又试了一次。现在它在搜索中弹出错误(情节):未使用的参数(情节)
  • 你没有按我说的做:p
  • 您确定require(forecast) 会返回TRUE反对使用require 代替library 的争论很多。在这种情况下,如果包不可用,代码会很高兴地继续运行而不用担心(并且不会通知您。)证明使用require(IMO)的唯一理由是当您的代码执行一件事时,如果包存在(在这种情况下你应该if (require(...))),如果不存在其他东西。顺便说一句:从代码块的系数返回方面打破绘图生成可能更清楚。
  • 在我的笔记本电脑上最近的一个例子中,我同时安装了 R-3.3 和 3.4。我现在在 3.3 中完成大部分工作,直到所有内容都经过测试,但是当我编译 Rmd 文件时,它默认为最近安装的。在那种情况下,我使用的许多软件包尚未在 3.4 中安装。 Ergo 为什么我看到一个包安装在 R 的一个实例中,但在编译 Rmd 时它不可用。

标签: r plot knitr


【解决方案1】:
require(forecast)
Loading required package: forecast
> foo <- function(N, y1=1, p=0.8, q=1-p, seed=NULL, stepwise=TRUE, verbose=0) {
+     if (!is.null(seed)) set.seed(seed)
+     y <- c(y1, rep(NA,N-1))
+     for (i in 2:N) y[i] <- p*y[i-1] + q*rnorm(1)
+     if (verbose) plot(y, type='l', xlab='time')
+     return (list(y=y, aa=auto.arima(y, stepwise=stepwise)))
+ }
> v <- foo(N=100, seed=10, verbose=1); v$aa$coef
  ar1 
0.8946974 

您的代码运行良好.. 它甚至绘制了一个情节。所以问题可能出在预测包的加载上。或者尝试在绘制两个冒号而不是三个冒号之前使用 stats::plot。

【讨论】:

    猜你喜欢
    • 2020-03-15
    相关资源
    最近更新 更多