我的总目标:
从网站加载值并通过使用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的代码:(我没有发布script_link_2:6,因为,唯一的区别是使用另一个链接到其他网站)
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几毫秒,但不会保存任何数据。我还看了我的硬盘上的另一个地方,但什么也没有存储。
我需要解锁任何权限吗?这与不正确的路径有关吗?
发布于 2022-03-29 11:20:43
您看过日志(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)发布于 2022-03-29 16:11:42
相关的错误是,operations_skript.R无法找到val1...val6对象的路径,也无法使用函数readHTMLtable()和htmlParse()而不附加第二个skript中的库。
谢谢您的帮助,以后我会更经常地查看日志文件。
https://stackoverflow.com/questions/71640701
复制相似问题