Редактировать: для фрейма данных и общего количества ключевых слов просто используйте strsplit. Нет необходимости использовать strcnt, если вас не интересует число на ключевое слово . Вот где я вас неправильно понял:
tt <- data.frame(
a=rnorm(3),
b=rnorm(3),
c=c("the quick fox lazy","rbrown+fr even","what what goes & around"),
stringsAsFactors=F
)
sapply(tt$c, function(n){
length(strsplit(n, split = "[[:space:][:punct:]]+")[[1]])
})
Чтобы прочитать данные, взгляните также на «readLines и / или» scan. Это сохраняет формат строки и позволяет обрабатывать файл строка за строкой (или строка за строкой). Если вы используете файловое соединение, вы можете даже загрузить файл по частям, что поможет вам, когда вы достигнете пределов памяти.
Простой пример с использованием readLines:
con <- textConnection("
The lazy fog+fog fog
never ended for fog jumping over the
fog whatever . $ plus.
")
# You use con <- file("myfile.txt")
Text <- readLines(con)
sapply(Text,textcnt, split = "[[:space:][:punct:]]+", method = "string", n = 1L)
В sidenote использование упомянутой опции Dirk (stringsAsFactors=F
) не снизит производительность по сравнению с обычной командой read.table. На самом деле наоборот. Вы должны использовать sapply, как указано выше, но заменить текст на as.character(Mydf$Keyword.text)
(или использовать опцию stringsAsFactors=F
и удалить as.character()
.