我有一个从网址下载数据的循环。现在我希望每x次迭代,到目前为止的信息都被写掉了。
因此我有以下代码:
declare
date_value char(10) := TO_CHAR( CURRENT_DATE, 'DD.MM.YYYY' );
week_value pls_integer := TO_NUMBER(TO_CHAR(CURRENT_DATE,'WW'));
start_date_value char(10) := TO_CHAR(TRUNC(CURRENT_DATE, 'IW'),'DD.MM.YYYY');
end_date_value char(10) := TO_CHAR(NEXT_DAY(TRUNC(CURRENT_DATE,'IW'),'SUNDAY'),'DD.MM.YYYY');
begin
htp.p('<< '||'Week'|| week_value ||' >> '|| start_date_value ||' - '|| end_date_value);
end;
然而,在此期间没有任何东西得到保存?我在哪里错误的代码?感谢您的见解。
答案 0 :(得分:1)
我认为您的问题可能在:
myfile <- file.path(R(), paste0(mytime, "_", i, ".csv"))
正如R认为R()
是一个功能。
Error in R() : could not find function "R"
如果您愿意,可以将其更改为getwd()
(不要忘记先设置工作目录setwd()
)或指定其他路径。
此外,在这里:write.csv2(final, file = myfile, sep = "", row.names = FALSE, col.names = FALSE, quote = FALSE, append = FALSE)
,您忘了写paste()
,并说服您可以删除您使用的默认参数。
write.csv2(final, file = paste(myfile, sep = "" ))
#Edit
这可能不是最有效的方法,但它可能会成功。 主要问题是您通过url索引追加pages3 list object / csv文件。如果您为pages3创建新索引,则可以在每个网址中重置它。
setwd("Your working directory path")
baseurl <- "http://zoeken.kvk.nl/Address.ashx?site=handelsregister&partialfields=&q=010"
pages3 <- list()
#Counter for the url loop
i <- 1
#Counter for the appended csv file/ list object pages3
k <- 1
for(i in 1:99999){
#Read JSON file by i index
mydata <- RJSONIO::fromJSON(paste0(baseurl,i), flatten=TRUE)
#Appending to the Pages3 list object by k index
pages3[[k]] <- mydata$resultatenHR
# Increasing the k counter
k <- k + 1
options(timeout = 4000000)
if(i %% 100 == 0) {Sys.sleep(5)}
if(i %% 1000 == 0) {
final_df <- do.call(rbind, pages3)
final <- Reduce(function(x,y) merge(x, y, all=TRUE), final_df)
mytime <- format(Sys.time(), "%b_%d_%H_%M_%S_%Y")
myfile <- file.path(getwd(), paste0(mytime, "_", i, ".csv"))
write.csv2(final, file = paste(myfile, sep = "" ))
#Resetting the pages3 list object
pages3 <- NULL
#Resting the k index counter
k <- 1
}
}
但是,根据您的计算机/您尝试导入的文件的大小,当您导入所有网址时,保存和拆分到不同的csv文件可能会更有效。