TaskschedulerR 不在 RGui 中启动 script.R

TaskschedulerR doesn´t start script.R in RGui

我的将军Objective:

使用 R. 从网站加载值并将这些值存储在列表中 R. 手动启动 R 脚本工作并将相应的值保存在 .txt 文件中(因此,基本上工作流程按预期工作)。不幸的是,taskscheduleR 的自动化尝试没有达到预期效果。

我刚刚开始使用 R(我知道我的代码包含不必要的部分,我将在工作流完全正常工作后重构代码)。

# ------------------- NECESSARY PACKAGES -----------------------

install.packages("lubridate")
install.packages("rvest")
install.packages("XML")
install.packages("xml2")
install.packages("httr")
install.packages("taskscheduleR")
library(xml2)
library(lubridate)
library(rvest)
library(XML)
library(httr)
library(taskscheduleR)

#----------------------------[ 1 ]-----------------------------

# define paths of subscripts

path1 <- "C:/Users/Dorian/Desktop/R/script_link_1.R"
path2 <- "C:/Users/Dorian/Desktop/R/script_link_2.R"
path3 <- "C:/Users/Dorian/Desktop/R/script_link_3.R"
path4 <- "C:/Users/Dorian/Desktop/R/script_link_4.R"
path5 <- "C:/Users/Dorian/Desktop/R/script_link_5.R"
path6 <- "C:/Users/Dorian/Desktop/R/script_link_6.R"

val1 <- source(path1)
val2 <- source(path2)
val3 <- source(path3)
val4 <- source(path4)
val5 <- source(path5)
val6 <- source(path6)

#----------------------------[ 2 ]-----------------------------

# this code opens the script and saves values to .txt files 

path_op <- "C:/Users/Dorian/Desktop/R/operations_skript.R"
op <- source(path_op)

代码operations_skript.R:

list1 <- list(header = FALSE)
list2 <- list(header = FALSE)
list3 <- list(header = FALSE)
list4 <- list(header = FALSE)
list5 <- list(header = FALSE)
list6 <- list(header = FALSE)

list1 <- c()
list2 <- c()
list3 <- c()
list4 <- c()
list5 <- c()
list6 <- c()

for (i in 1:6){
if (i==1) {list1 <- c(list1, val1[1])}
if (i==2) {list2 <- c(list2, val2[1])}
if (i==3) {list3 <- c(list3, val3[1])}
if (i==4) {list4 <- c(list4, val4[1])}
if (i==5) {list5 <- c(list5, val5[1])}
if (i==6) {list6 <- c(list6, val6[1])}
}

lapply(list1, write, "bid1.txt", append=TRUE, ncolumns=1000)
lapply(list2, write, "bid2.txt", append=TRUE, ncolumns=1000)
lapply(list3, write, "bid3.txt", append=TRUE, ncolumns=1000)
lapply(list4, write, "bid4.txt", append=TRUE, ncolumns=1000)
lapply(list5, write, "bid5.txt", append=TRUE, ncolumns=1000)
lapply(list6, write, "bid6.txt", append=TRUE, ncolumns=1000)

script_link_1.R 的代码:(我没有 post script_link_2:6 因为,唯一的区别是另一个 link 对其他网站的用法)

link1 <- "https://www.tradegate.de/orderbuch.php?isin=CA40638K5070"     #camber

document <- htmlParse(GET(link1, user_agent("Mozilla")))
removeNodes(getNodeSet(document,"//*/comment()"))
doc.tables<-readHTMLTable(document, header=FALSE)

# Extract column from BID/ASK table
BidAsk = doc.tables[[2]][,2]

# Replace commas with point decimal separator
BidAsk = as.numeric(gsub(",", ".", BidAsk))

# Convert to numeric
BidAsk = as.numeric(BidAsk)

list1 <- list()
list1 <- c(BidAsk[1], BidAsk[2])

print(list1)

我想用 taskscheduleR 自动执行此任务,因为我想每分钟都执行此任务。我这样试过:

#----------------------------[ 3 ]-----------------------------

# scheduledtask for automatic saving data to .txt files every minute

save_to_txt <- file.path("C:/Users/Dorian/Desktop", "R", "operations_skript.R")

taskscheduler_create(taskname = "saving", rscript = save_to_txt,
                     schedule = "MINUTE", starttime = "23:45", modifier = 1)

taskscheduler_delete(taskname = "saving") # for stopping the task

这里的问题是任务可以创建成功,但是后面的脚本没有执行:

[1] "ERFOLGREICH: Die geplante Aufgabe \"saving\" wurde erfolgreich erstellt."

如果我像 [ 2 ] 中那样手动启动它,它会按预期工作(将值存储在 6x .txt 文件中)。

taskscheduleR 仅每分钟快速打开一个 cmd 几毫秒,但不保存任何数据。我也查看了硬盘上的另一个位置,但没有存储任何内容。

我需要解锁任何权限吗?这与错误的路径有什么关系吗?

您是否查看了日志(您的脚本位于 C:/Users/Dorian/Desktop/R)并在写入磁盘时提供了完整路径?

lapply(list1, write, "bid1.txt", append=TRUE, ncolumns=1000)

应该是完整路径,例如

lapply(list1, `write`, "C:/Users/Dorian/Desktop/bid1.txt", append=TRUE, ncolumns=1000)

相关错误是,operations_skript.R 无法找到 val1...val6 对象的路径,并且无法使用函数 readHTMLtable()htmlParse() 也没有在第二个脚本中附加库。

感谢您的帮助,以后我会经常查看日志文件。