R:把钱存到一个圈里

R:把钱存到一个圈里,r,R,我需要在lappy函数中编写一个文件。我正在抓取一个大的网页列表,我想每100次左右保存一次输出。我使用以下代码 from = seq(1,100, 10) aa <- length(url) func1 = function(url){ out <- tryCatch( { aa <<- aa -1 print(aa) doc = htmlParse(url) address= as.data.frame(

我需要在lappy函数中编写一个文件。我正在抓取一个大的网页列表,我想每100次左右保存一次输出。我使用以下代码

from = seq(1,100, 10)
aa <- length(url)
func1 = function(url){
  out <- tryCatch(
    {
      aa <<- aa -1 
      print(aa)
      doc =  htmlParse(url)
      address= as.data.frame(xpathSApply(doc,'//div[@class="panel-body"]', xmlValue, encoding="UTF-8"))
      page =  cbind(address,url)

      if (aa %in% from){
        pg =  suppressMessages(melt(cc))
        write.csv(pg,paste("bcc_",aa,".csv"))
      }

}
cc = lapply(url, func1)
from=seq(1100,10)

aaBuild
cc
作为
lappy
之外的新环境对象

e <- new.env()
e$cc <- list()
a <- letters[]
b <- 1:26
# Example lapply
out <- lapply(a, function(a,b){ 
  e$cc[[a]] <- b
  if(length(e$cc)%%10==0) print(length(e$cc))
  b # Giving an output to out aswell
  },b
)
# [1] 10
# [1] 20
# Showing first elements of outputs
# > e$cc
#$a
# [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#[26] 26
# > out
#[[1]]
# [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#[26] 26

这是一个需要逗号的简单例子吗
lappy(url,func1)
not
lappy(url func1)
?否问题仍然存在,即他们试图调用一个在其环境中尚不存在的对象。如果他们使用一个for循环(用户特别要求避免),他们可以初始化一个空白列表,使用“代码>列表())/代码>,将输出追加到循环中的空白列表中,然后当CC达到正确的长度时保存输出。使用for循环将是更容易的解决方案。@njpurgo-这不是一个通俗的说法,我相信你的帖子中缺少了一个
}
。可能不是问题的原因,但它使解析帖子变得困难。什么是来自
?您的错误可能来自带有
melt(cc)
的行。此时,未定义变量
cc
func1 <- function(url){
  out <- tryCatch(
    {
     doc <-  htmlParse(url)
     address <- as.data.frame(xpathSApply(
                  doc,'//div[@class="panel-body"]', xmlValue, encoding="UTF-8")
                )
      page <- cbind(address,url)
     }
}
wrapfun <- function(urls){
  e <- new.env()
  e$cc <- list()
  lapply(urls, function(x){
    e$cc[[x]] <- func1(x)
    if(length(e$cc)%%10==0){ # Change the %%y to how often you want to save e.g length(e$cc)%%100==0 would be every 100.
      pg <-  suppressMessages(melt(e$cc))
      write.csv(pg,paste("bcc_",length(e$cc),".csv"))
    }
  })
  return(e$cc)
}