2017-02-09 14 views
0

Мои выходные данные должны быть похожи на изображения я прикрепленногоWeb Зачистка - Использование R, ошибки в bind_rows_ (х, .id)

enter image description here

я использовал следующий код, но я получаю ошибка

Error in bind_rows_(x, .id) : 
    Can not automatically convert from character to integer in column "Runs" 

Я использовал следующий пример кода

require(rvest) 
require(tidyverse) 

urls <- c("http://stats.espncricinfo.com/ci/engine/player/326016.html?class=2;filter=advanced;floodlit=1;innings_number=1;orderby=start;result=1;template=results;type=batting;view=match", 
"http://stats.espncricinfo.com/ci/engine/player/326016.html?class=2;filter=advanced;floodlit=2;innings_number=2;orderby=start;result=1;template=results;type=batting;view=match", 
"http://stats.espncricinfo.com/ci/engine/player/326016.html?class=2;filter=advanced;floodlit=1;innings_number=1;orderby=start;result=2;template=results;type=batting;view=match", 
"http://stats.espncricinfo.com/ci/engine/player/326016.html?class=2;filter=advanced;floodlit=1;innings_number=2;orderby=start;result=2;template=results;type=batting;view=match", 
"http://stats.espncricinfo.com/ci/engine/player/326016.html?class=2;filter=advanced;floodlit=2;innings_number=1;orderby=start;result=2;template=results;type=batting;view=match", 
"http://stats.espncricinfo.com/ci/engine/player/326016.html?class=2;filter=advanced;floodlit=2;innings_number=2;orderby=start;result=2;template=results;type=batting;view=match" 
) 

extra_cols <- list(tibble("Team"="IND","Player"="B.Kumar","won"=1,"lost"=0,"D"=1,"D/N"=0,"innings"=1,"Format"="ODI"), 
        tibble("Team"="IND","Player"="B.Kumar","won"=1,"lost"=0,"D"=0,"D/N"=1,"innings"=2,"Format"="ODI"), 
        tibble("Team"="IND","Player"="B.Kumar","won"=0,"lost"=1,"D"=1,"D/N"=0,"innings"=1,"Format"="ODI"), 
        tibble("Team"="IND","Player"="B.Kumar","won"=0,"lost"=1,"D"=1,"D/N"=0,"innings"=2,"Format"="ODI"), 
        tibble("Team"="IND","Player"="B.Kumar","won"=0,"lost"=1,"D"=0,"D/N"=1,"innings"=1,"Format"="ODI"), 
        tibble("Team"="IND","Player"="B.Kumar","won"=0,"lost"=1,"D"=0,"D/N"=1,"innings"=2,"Format"="ODI") 
) 

doc <- map(urls, read_html) %>% 
    map(html_node, ".engineTable:nth-child(5)") 



keep <- map_lgl(doc, ~class(.) != "xml_missing") #### condition to exclude when web urls return "NO Records"### 

table<-map(doc[keep], html_table, fill = TRUE) %>% 
    map2_df(extra_cols[keep], cbind) 
+0

Проблема заключается в последней операции 'map2_df'. Если вы просто замените 'map2_df' на' map2', он будет работать. – GGamba

+0

@ G.Gamba Я хочу в dataframe, он содержит смешанные типы данных. Пример: список (Bat1 = c («0 *», «1 *», «DNB», «DNB», «DNB», «DNB»,: – chdeepak96

ответ

0

проблема заключается в "-" некоторые раз в колонке Runs. Так что, когда нет «-» html_table интерпретирует это как целочисленный столбец, , если есть «-» его интерпретируемый как символ.

Очевидно, что «-» следует понимать как NA. Это может быть достигнуто за счет type_convert следующим образом:

table<-map(doc[keep], html_table, fill = TRUE) %>% 
    map(type_convert, na = c("", NA, "-")) %>% 
    map2_df(extra_cols[keep], cbind) 

na = c("", NA, "-") В карты "-" в НС.

+0

Thanx решил мою проблему. – chdeepak96