【发布时间】:2016-04-20 19:21:39
【问题描述】:
我编写了一个简单的函数来从 Baseball Reference.com 上抓取所有 MLB 投手的姓名。我创建了一个带有刮擦名称的向量,从原始刮擦名称中删除了 Â,并强制转换为字符向量。
library(rvest)
url <- "http://www.baseball-reference.com/leagues/MLB/2016-standard-pitching.shtml"
mlbpitcherdata <- read_html(url)
mlbpitchers <- mlbpitcherdata %>% html_nodes("td:nth-child(2) a") %>% html_text()
mlbpitchers <- as.character(sapply(mlbpitchers, function(x) gsub("Â","",x))) # Remove "Â" from all raw pitcher names
然后我尝试在字符向量中查找特定名称的索引,我知道它在向量内部,which() 函数返回integer(0)。
# Search for pitcher name in list of pitchers = Returns integer(0)!
which(mlbpitchers=="Chad Bettis")
integer(0)
# But, mlbpitchers CLEARLY has Chad Bettis inside of it.
mlbpitchers[26]
[1] "Chad Bettis"
我很困惑为什么which() 函数不能识别名称。我非常感谢任何人的帮助。我知道这可能是一件非常愚蠢和容易的事情,但我想不通!谢谢!
(注意:删除 Â 字符后,我被要求选择保存编码。我选择系统默认值:ISO 8859-1。我不确定这是否会导致问题。)
【问题讨论】:
-
rawToChar(charToRaw(mlbpitchers[26]),multiple = TRUE)可能说明了问题,但我不是奇怪隐藏字符方面的专家。