【问题标题】:How to combine several cells into data frame with one cell is missing (NULL) in R如何将多个单元格组合成数据框,其中一个单元格在 R 中丢失(NULL)
【发布时间】:2019-11-03 20:36:53
【问题描述】:

我想将来自多个函数的多个单元格组合到一个数据框中。 但是,一个函数返回NULL 结果,因此我无法将它们全部组合到一个数据帧中。无论如何,我已经有另一个现有数据框,将使用这个新数据框更新 (rbind)。

library(rvest)

url <- "https://webscraper.io/test-sites/e-commerce/allinone/product/233"
doc <- read_html(url)

web <- function(node) {
      doc %>%
      html_nodes(node) %>%
      html_text() %>% 
      gsub("\n", "", .) %>% 
      trimws()}

web_na <- possibly(web, otherwise = 0)

web1 <- web_na("h1")
web2 <- web_na(".price")
web3 <- web_na(".just-random-nodes") 

df_web <- data.frame(web1, web2, web3)


==========
Result:
Error in data.frame(web1, web2, web3) : arguments imply differing number of rows: 1, 0

Expected Result:
web1            web2            web3
<fctr>         <fctr>           <fctr>
Test Sites     $520.99           0 or NA


如何调整我的代码以将它们组合起来?

【问题讨论】:

  • 我能想到的最简单的解决方案是像 df_web &lt;- data.frame(if(is_empty(web1)){NA}else{web1}, if(is_empty(web2)){NA}else{web2}, if(is_empty(web3)){NA}else{web3}) 这样的东西)。注意:is_empty() 来自purrr

标签: r dataframe web-scraping rvest


【解决方案1】:

为 web3 添加这个可以工作。您可能需要为 web1 和 web2 添加类似的语句:

web3 <- ifelse(length(web3)==0, NA, web3)
df_web <- data.frame(web1, web2, web3)
df_web
#         web1    web2 web3
# 1 Test Sites $520.99   NA

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-09
    • 1970-01-01
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    相关资源
    最近更新 更多