【问题标题】:Nested Loop using apply functions in R在 R 中使用应用函数的嵌套循环
【发布时间】:2016-07-27 03:09:04
【问题描述】:

我有以下功能可以使用 RSelinium 和 phantomjs 从网站获取一些 url。

get_url <- function(url){
  rdr$navigate(url)
  li <- rdr$findElements(using = 'xpath',  "//div[@data-id]")
  str <- sapply(li, function(x){x$getElementAttribute('outerHTML')})
  if(length(str)>1){
  tree <- htmlParse(str)
  url <- getNodeSet(tree, '//div//a[@class="link url"]')
  url <- sapply(url, xmlGetAttr, 'href')
  }
}

url 存储在一个 30 x 60 的矩阵中。

我尝试使用以下嵌套循环执行此操作。

for(i in 1:ncol(offset_url)){
  for(j in 1:nrow(offset_url)){
    url_list <- rbind(url_list,get_url(offset_url[j,i]))
  }
}

但是,执行起来需要很多时间。

有没有办法可以使用应用函数来减少时间?

【问题讨论】:

  • 发布的代码存在许多句法问题,您可能会将这些问题放在一起作为示例。你能发布实际代码吗?

标签: r loops apply


【解决方案1】:

这有用吗?

do.call(rbind,list(mapply(function(x,y) get_url(offset_url[x,y]),x=row(offset_url),y=col(offset_url))))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-03-17
    • 1970-01-01
    • 1970-01-01
    • 2020-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多