2017-09-15 124 views
0

我有这段代码尝试从Kitco网站获取黄金的每日现货价格。似乎无法识别数据

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] 

我似乎无法确定“mana”变量是什么。这不是一个数据帧,而我似乎无法把它做成一个数据框键入

mala <- as_data_frame(mana) 

甚至

mala <- as_data_frame(mana[1]) 

我缺少什么?

+2

'as.data.frame(法力)'? – PoGibas

+1

你也可能想引用'mata [32]'作为'mata [[32]]'将它返回到列表之外。 – Mako212

+0

那么为什么as.data.frame(mana)可以工作,但as_data_frame不起作用? as.data.frame(法力)工程,顺便说一句。谢谢!你可以将它作为答案发布,以便我可以将它作为答案投票吗? –

回答

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接受 “任何ř对象” 和as_data.frame只接受矩阵或数据帧。如果你喜欢整洁的方法和as_data_frame,你可以这样做:

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

在这里,我们提取的列表,现在我们的对象类是数据帧,我们可以把它管道到as_data_frame