В настоящее время я пытаюсь очистить текст от дерева HTML, которое я проанализировал следующим образом:
require(RCurl)
require(XML)
query.IMDB <- getURL('http://www.imdb.com/title/tt0096697/epdate') #Simpsons episodes, rated and ordered by broadcast date
names(query.IMDB)
query.IMDB
query.IMDB <- htmlParse(query.IMDB)
df.IMDB <- getNodeSet(query.IMDB, "//*/div[@class='rating rating-list']")
Моя первая попытка состояла в том, чтобы использовать grep для результирующего вектора, но это не удается.
data[grep("Users rated this", "", df.IMDB)]
#Error in data... object of type closure is not subsettable
Моя следующая попытка состояла в том, чтобы использовать grep для отдельных точек в запросе. Вектор IMDB: -
vect <- numeric(length(df.IMDB))
for (i in 1:length(df.IMDB)){
vect[i] <- data[grep("Users rated this", "", df.IMDB)]
}
но это также делает закрытие не поднаборной ошибкой.
Наконец, попробуйте указанную выше функцию без data[]
вокруг grep
throws
Error in df.IMDB[i] <- grep("Users rated this", "", df.IMDB[i]) : replacement has length zero
Я на самом деле надеюсь в конечном итоге заменить все, кроме нескольких форм [0-9].[0-9]
после данной текстовой строки с пробелом, но сначала я делаю более простой вариант, чтобы заставить эту работу работать.
Может ли кто-нибудь сообщить, какую функцию я должен использовать, чтобы редактировать текст в каждой точке моего запроса. Вектор IMDB
Здесь нет необходимости использовать grep
(регулярное выражение AVoid с файлами HTML). Используйте readHTMLTable
функцию readHTMLTable
из пакета XML
:
library(XML)
head(readHTMLTable('http://www.imdb.com/title/tt0096697/epdate')[[1]][,c(2:4)])
Episode UserRating UserVotes
1 Simpsons Roasting on an Open Fire 8.2 2,694
2 Bart the Genius 7.8 1,167
3 Homer Odyssey 7.5 1,005
4 There No Disgrace Like Home 7.9 1,017
5 Bart the General 8.0 992
6 Moaning Lisa 7.4 988
Это дает вам таблицу рейтингов,... Может быть, вы должны преобразовать UserVotes в числовой.