我想将多个功能的多个单元合并到一个数据帧中。
但是,一个函数返回的结果为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
如何调整代码以将它们组合在一起?
答案 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