2017-09-15 2 views
0

J'ai ce code pour essayer d'obtenir le prix au comptant quotidien de l'or sur le site Web de Kitco.Impossible d'identifier les données

library("rvest") 
library("dplyr") 
library("tidyr") 
library("tibble") 
maya <- read_html("http://www.kitco.com/market/") 
mara <- html_nodes(maya, "table") 
mata <- html_table(mara, fill=TRUE) 
mana <- mata[32] 

Je n'arrive pas à identifier la variable "mana". Ce n'est pas une trame de données, et je ne peux pas sembler faire un dataframe en tapant

mala <- as_data_frame(mana) 

ou même

mala <- as_data_frame(mana[1]) 

Qu'est-ce que je manque?

+2

'as.data.frame (mana) '? – PoGibas

+1

Vous voudrez probablement aussi faire référence à 'mata [32]' en tant que 'mata [[32]]' pour le renvoyer en dehors de la liste. – Mako212

+0

Alors, pourquoi as.data.frame (mana) fonctionne-t-il, mais as_data_frame ne fonctionne pas? as.data.frame (mana) fonctionne, btw. Merci! Pouvez-vous l'afficher comme réponse pour que je puisse voter comme réponse? –

Répondre

2
library(rvest) 
library(tidyverse) 
"http://www.kitco.com/market/" %>% 
    read_html() %>% 
    html_nodes("table") %>% 
    html_table(fill = TRUE) %>% 
    .[32] %>% 
    as.data.frame() 

enter image description here

as.data.frame accepte "tout objet R" et as_data.frame accepte des matrices uniquement ou des trames de données. Si vous préférez l'approche propre et as_data_frame, vous pouvez le faire:

... 
    .[[32]] %>% 
    as_data_frame() 

Ici nous avons extrait la liste et maintenant notre classe d'objets est la trame de données et nous redirigeriez à as_data_frame