我试图通过使用XML包从fifa.com获取一些统计信息。导入成功但列名称具有unicode符号。我想删除这些符号。
这就是我获取数据的方式,
library(XML)
url <- "http://www.fifa.com/worldcup/statistics/teams/disciplinary.html"
foulbycountry <- readHTMLTable(url)
foulbycountry1 <- do.call(rbind.data.frame, foulbycountry)
变量名称包含我要删除的两个字符。我试图创建一个新对象,但它无法正常工作。例如,
country <- foulbycountry1$Teams▴▾
fouls.committed <- foulbycountry1$Fouls Committed▴▾
给出了以下输出,
> country <- foulbycountry1$Teams▴▾
Error: unexpected input in "country <- foulbycountry1$Teams�"
> fouls.committed <- foulbycountry1$Fouls Committed▴▾
Error: unexpected symbol in "fouls.committed <- foulbycountry1$Fouls Committed"
有什么方法可以建议我删除那些额外的unicode字符吗?
答案 0 :(得分:2)
iconv
是一种选择......
names(foulbycountry1) <- iconv(names(foulbycountry1), to='ASCII', sub='')
names(foulbycountry1)
# [1] "Teams" "Teams" "Matches Played"
# [4] "Yellow Card" "Second yellow card and red card" "Red Cards"
# [7] "Fouls Committed" "Fouls Suffered\r\n" "Fouls causing a penalty"
这将删除所有非ASCII字符。其中一列在其末尾有换行符。要删除这些,您也可以使用
gsub('\r|\n', '', iconv(names(foulbycountry1), to='ASCII', sub=''))
答案 1 :(得分:1)
如果您只想在列名中保留可打印的ASCII字符,可以使用
names(foulbycountry1) <- gsub("[^\x20-\x7F]","",names(foulbycountry1))
您可以找到字符代码列表here。在这里,我们使用\x00
语法指定十六进制值。