【发布时间】: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 <- 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