Доступ к элементам в корпусе

Я использую функцию Корпуса для чтения файла, который я создал в указанном ниже каталоге.

chk <- Corpus(DirSource("C:\\Users\\TCS Profile\\Documents\\R\\Machine Learning Text\\Naive Bayes"))

После создания корпуса, когда я проверяю созданную переменную chk, я обнаруживаю, что содержимое было прочитано:

 str(chk)
List of 1
 $ Test.txt:List of 2
  ..$ content: chr [1:7] "Hi Wassup" "How are You" "Hope it Works!!!" "" ...
  ..$ meta   :List of 7
  .. ..$ author       : chr(0) 
  .. ..$ datetimestamp: POSIXlt[1:1], format: "2015-10-14 16:15:17"
  .. ..$ description  : chr(0) 
  .. ..$ heading      : chr(0) 
  .. ..$ id           : chr "Test.txt"
  .. ..$ language     : chr "en"
  .. ..$ origin       : chr(0) 
  .. ..- attr(*, "class")= chr "TextDocumentMeta"
  ..- attr(*, "class")= chr [1:2] "PlainTextDocument" "TextDocument"
 - attr(*, "class")= chr [1:2] "VCorpus" "Corpus"

Проблема в том, что я не могу получить доступ к определенному значению в содержимом, скажем, к третьему элементу. (Надеюсь, это сработает!!) Я попытался использовать следующий код:

chk[[1]][1,3]

Ошибка в chk[[1]][1, 3]: неправильное количество измерений

Кто-нибудь может сказать мне, как я могу получить доступ к соответствующему элементу и почему такая ошибка возникает для вышеуказанного типа доступа?


person Dilip T Monson    schedule 14.10.2015    source источник
comment
chk$Test.txt$content[3] - самый ясный способ. Изменение вашего пути: chk[[1]][[1]][3]. Запустите его по частям, чтобы вы могли понять, как это сделать в следующий раз, например, chk$Test.txt и chk$Test.txt$content   -  person Frank    schedule 14.10.2015
comment
@ Франк, я тоже пробовал этот вариант:   -  person Dilip T Monson    schedule 14.10.2015
comment
Что ж, это должно сработать. Не видя вашего фактического примера, никто, кроме вас, не может понять, почему это не так.   -  person Frank    schedule 14.10.2015
comment
Вариант chk [[1]][[1]][3] работает. Большое спасибо. Однако, когда я пробую Chk$Test.txt, я получаю Null. Любая идея, почему это так работает   -  person Dilip T Monson    schedule 14.10.2015
comment
Попробуйте names(chk). У меня сложилось впечатление от str, что "Test.txt" было именем верхнего объекта, но, возможно, я ошибаюсь.   -  person Frank    schedule 14.10.2015
comment
Верхний объект — это сам Test.txt. имена(chk) [1] Test.txt. Однако, когда я пытаюсь выполнить chk$Test.txt, он возвращает NULL.   -  person Dilip T Monson    schedule 14.10.2015
comment
Странный. Возможно, R не любит иметь дело с . в именах объектов. Хотя я не совсем уверен. Добавление кавычек должно сделать это, chk$"Test.txt"   -  person Frank    schedule 14.10.2015
comment
Он по-прежнему показывает NULL. Я думаю, может быть какая-то другая проблема, спасибо за вклад. В случае, если я смогу найти ответ, дам вам знать... Очень признателен за помощь... :)   -  person Dilip T Monson    schedule 14.10.2015


Ответы (1)


Это должно работать:

> chk[[1]][1]$content[3]
#[1] "Hope it Works!!!"

Я использовал эти данные, чтобы воспроизвести ваш пример:

chk <-structure(list(content = list(structure(list(content =    c("Hi Wassup ", "How are You ", "Hope it Works!!!", "", "long time no see ", "Howdy", "Yo"), 
meta = structure(list(author = character(0),  datetimestamp = structure(list(sec = 12.238600730896, min = 17L, hour = 19L, mday = 14L, mon = 9L, year = 115L, wday = 3L, yday = 286L, isdst = 0L), 
.Names = c("sec", "min", "hour", "mday", "mon", "year", "wday", "yday", "isdst"), 
class = c("POSIXlt", "POSIXt"), tzone = "GMT"), description = character(0), heading = character(0), id = "Test.txt", language = "en", 
origin = character(0)), .Names = c("author", "datetimestamp", "description", "heading", "id", "language", "origin"), 
class = "TextDocumentMeta")), .Names = c("content", "meta"), class = c("PlainTextDocument", "TextDocument"))), meta = structure(list(), class = "CorpusMeta"), 
dmeta = structure(list(), .Names = character(0), row.names = 1L, class = "data.frame")), 
.Names = c("content", "meta", "dmeta"), class = c("VCorpus", "Corpus"))
person RHertel    schedule 14.10.2015