小编Raa*_*aad的帖子

在 R 中将 if 语句作为函数参数传递

我正在编写一个内部包含多个函数的函数(一个使用插入符包训练和测试多个模型的包装器)。

问题是,有时我想使用默认参数,有时我想指定我自己的参数。就我而言,有时我想修改tuneGrid,有时我想使用默认网格。我不能使用省略号(...)来传递这个参数,因为每个模型都需要一个单独的网格。

如何在函数参数中包含 if 语句?例如,

family = NULL
y <- rnorm(1000); x <- rnorm(1000)
glm(formula=y~x, if(!is.null(family)){family=family}, data=data.frame(x=x, y=y))
Run Code Online (Sandbox Code Playgroud)

由于多种原因,这不起作用,但我希望您能理解。我试图使用类似的东西作为第二个参数来解释逗号:

noquote( ifelse( !is.null(family), paste0(noquote("family="), family, "(),") ) )
Run Code Online (Sandbox Code Playgroud)

如果您有任何想法,请告诉我。

null arguments r function

3
推荐指数
1
解决办法
4660
查看次数

使用auto.Arima()和xreg进行ARIMA预测

我正在从事预测商店销售的项目以学习预测。到目前为止,我已经成功地使用了简单的auto.Arima()函数进行预测。但是为了使这些预测更加准确,我可以使用协变量。我定义了假日等协变量,借助这篇文章的帮助,使用xreg运算符会影响商店的销售:如何在R中的auto.arima()中设置xreg参数?

但是我的代码在以下行失败:

ARIMAfit <-auto.arima(saledata,xreg =协变量)

并给出错误提示:

model.frame.default(formula = x〜xreg,drop.unused.levels = TRUE)中的错误:变量长度不同(为'xreg'找到)另外:警告消息:在!is.na(x)和!is中.na(rowSums(xreg)):较长的对象长度不是较短的对象长度的倍数

以下是指向我的数据集的链接:https : //drive.google.com/file/d/0B-KJYBgmb044blZGSWhHNEoxaHM/view? usp =sharing

这是我的代码:

data = read.csv("xdata.csv")[1:96,]
View(data)

saledata <- ts(data[1:96,4],start=1)
View(saledata)

saledata[saledata == 0] <- 1
View(saledata)

covariates = cbind(DayOfWeek=model.matrix(~as.factor(data$DayOfWeek)),
                 Customers=data$Customers,
             Open=data$Open,
                 Promo=data$Promo,
             SchoolHoliday=data$SchoolHoliday)
View(head(covariates))


# Remove intercept
covariates <- covariates[,-1]
View(covariates)

require(forecast)
ARIMAfit <- auto.arima(saledata, xreg=covariates)//HERE IS ERROR LINE
summary(ARIMAfit)
Run Code Online (Sandbox Code Playgroud)

还告诉我如何预测接下来的48天。我知道如何使用简单的auto.Arima()和n.ahead进行预测,但不知道使用xreg时如何进行预测。

r forecasting

3
推荐指数
1
解决办法
7408
查看次数

标签 统计

r ×2

arguments ×1

forecasting ×1

function ×1

null ×1