Как объединить несколько ячеек в кадр данных с одной ячейкой отсутствует (NULL) в R - PullRequest
0 голосов
/ 03 ноября 2019

Я хочу объединить несколько ячеек из нескольких функций в один фрейм данных. Однако одна функция возвращает результат 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 Ответ

1 голос
/ 03 ноября 2019

Добавление этого для 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
...