Question

Im having a lot of trouble of automating my .R files, and im having trouble understand the information regarding it. But here goes:

Im using windows 7 and simply want to automatically run a R.script every morning at 08.00. The .R file spits out the output by itself, so I dont want a separate output-file. I've created a bat-file like this:

"C:\R\R-3.0.1\bin\x64\Rscript.exe" "C:\R\R-3.0.1\bin\x64\Scripts\24AR_v1bat.R"
Echo %DATE% %TIME% %ERRORLEVEL% >> C:\R\R-3.0.1\bin\x64\scripts\24AR_v1.txt

When I run this manually, it works perfectly. Both with/without the:

--default-packages=list

When I run it through the cmd-window, it works perfectly. Yet when I try to run it through the task-scheduler it runs, but does not work. (I either get a 1 or 2 error in my error-message file).

I've looked at R Introduction - Invoking R from the command line, and help(Rscript) but I still can't manage to get it to work.

NEW EDIT: I found that not doing the MS SQL-call, will let my code run from the scheduler. Not sure if I should make a new question or?

EDIT: Adding the R-script

# 24 Hour AR-model, v1 ----------------------------------------------------
#Remove all variables from the workspace
#rm(list=ls())
# Loading Packages
library(forecast)

#Get spot-prices System from 2012-01-01 to today
source("/location/Scripts/SQL_hourlyprices.R")
sys <- data.frame()
sys <- spot
rm(spot)

# Ordering the data, first making a matrix with names: SYS
colnames(sys) <- c("date","hour","day","spot")
hour <-factor(sys[,2])
day <-factor(sys[,3]) 
dt<-sys[,1]
dt<-as.Date(dt)
x<-sys[,4]

q <-ts(x, frequency=24)

x0<- q[hour==0]
x1<- q[hour==1]

x0 <-ts(x0, frequency=7)
x1 <-ts(x1, frequency=7)

# ARIMA MODELS
y0<-Arima(x0,order=c(2,1,0))
y1<-Arima(x1,order=c(2,1,1))

fr0 <- forecast.Arima(y0,h=1)
fr1 <- forecast.Arima(y1,h=1)

h1<-as.numeric(fr0$mean)
h2<-as.numeric(fr1$mean)

day1 <-Sys.Date()+1
atable<-data.frame
runtime<-Sys.time()
atable<-cbind(runtime,day1,h1,h2)
options(digits=4)

write.table(atable,   file="//location/24ar_v1.csv", 
append=TRUE,quote=FALSE, sep=",", row.names=F, col.names=F)

But as I said, I can manually run the code with the batch-file and have it work perfectly, yet with the scheduler it won't work.

Was it helpful?

Solution

After hours of trying everything, it seems the problem was that I had:

source("/location/Scripts/SQL_hourlyprices.R")

Where I simply had a SQL-call inside:

sqlQuery(dbdata2, "SELECT CONVERT(char(10), [lokaldatotid],126) AS date, 
   DATEPART(HOUR,lokaldatotid) as hour,
   DATENAME(DW,lokaldatotid) as dag,
   pris as spot

     FROM [SpotPriser] vp1
     WHERE  (vp1.boers_id=0)
     AND (vp1.omraade_id=0)
     AND lokaldatotid >='2012-01-01'
     GROUP BY lokaldatotid, pris
     ORDER BY lokaldatotid, hour desc") -> spot

When I moved this directly into the script, and deleted the source-line, the scripts would run with the scheduler.

I have no idea why....

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top