如何在R中缺少将一个单元格合并到一个单元格中的多个单元格(NULL)

时间:2019-11-03 20:36:53

标签: r dataframe web-scraping rvest

我想将多个功能的多个单元合并到一个数据帧中。 但是,一个函数返回的结果为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


如何调整代码以将它们组合在一起?

1 个答案:

答案 0 :(得分: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