read.table действует по-разному при использовании в консоли и при использовании в файле уценки R.

Я пытаюсь прочитать файл (с разделителями) внутри фрагмента кода в уценке R с помощью RStudio. Ниже приведен фрагмент кода уценки R.

```{r}
dealInfo <- read.table("deneme.dat",header=TRUE,sep="|",quote="",comment="",fill=TRUE)
dim(dealInfo)
```  

Выход

dealInfo <- read.table("deneme.dat", header = TRUE, sep = "|", quote = "", comment = "", 
fill = TRUE)
## Warning: invalid input found on input connection 'deneme.dat'
## Warning: incomplete final line found by readTableHeader on 'deneme.dat'
dim(dealInfo)
## [1]  1 50

В первой строке файла есть слово «Société». Однако при вводе команд в консоли read.table читает все строки в файле без нареканий. Символ "é" при чтении в data.frame преобразуется в "\xe9". Файл deneme.dat содержит три строки данных. Когда у меня есть уценка для печати содержимого DealInfo, я вижу, что после первого вхождения «é» ничего не читается. Это, я считаю, объясняет второе предупреждение.

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


person tepedizzle    schedule 08.02.2013    source источник
comment
похоже, вам нужно установить свой местный! что вы получите, когда наберете это в консоли read.table(text ='Société')?   -  person agstudy    schedule 09.02.2013
comment
Я правильно печатаю слово Société. Как в консоли, так и в выводе уценки.   -  person tepedizzle    schedule 09.02.2013
comment
Для предупреждения incomplete final line found by readTableHeader 1. Откройте файл Перейдите к последней строке, 2. Поместите курсор в конец этой строки Нажмите клавишу возврата Сохранить файл   -  person agstudy    schedule 09.02.2013
comment
@agstudy, спасибо, я обновил вопрос, чтобы ответить на ваш предыдущий комментарий.   -  person tepedizzle    schedule 09.02.2013
comment
Поскольку у вас всего 3 строки, можете отредактировать и добавить их в свой вопрос, чтобы воспроизвести ошибку?   -  person agstudy    schedule 09.02.2013
comment
@agstudy, чтобы сделать сообщение воспроизводимым, я изучил это. Когда я использую cat(lines,file=deneme.dat) для записи строк в файл с помощью R, а затем считываю их обратно, это работает. Из-за этого неожиданного поведения я не могу привести воспроизводимый пример. Я не хотел запутывать вопрос, добавляя много деталей.   -  person tepedizzle    schedule 09.02.2013


Ответы (1)


Я предполагаю, что это ошибка (о кодировках файлов), которая была исправлена ​​некоторое время назад как в RStudio, так и в Knitr. Обновите RStudio (v0.97.316) и knitr (v1.0.5) и проверьте, сохраняется ли проблема. Также см. Часто задаваемые вопросы 1 :)

В худшем случае вы можете пересохранить документ Rmd в родной кодировке вашей ОС (File => Save with Encoding). Основная причина описанной вами проблемы заключается в том, что RStudio использовала options(encoding = ...) для объявления кодировки документа, но это было неуместно, поскольку оно изменило кодировку всего сеанса R (признаюсь, это произошло из-за моих неправильных инструкций им в самое начало). Теперь RStudio может передавать кодировку в knitr ненавязчивым образом.

person Yihui Xie    schedule 09.02.2013