我正在尝试使用RStudio读取R markdown中代码块内的文件(管道分隔)。请参阅下面的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包含三行数据。当我有markdown打印dealInfo的内容时,我看到在第一次出现“é”之后没有读取任何内容。我相信这解释了第二次警告。
我不确定为什么在读取同一个文件时控制台和markdown的行为会有所不同,看起来两个环境中的语言环境和其他配置参数是相同的。任何帮助将不胜感激。谢谢。
答案 0 :(得分:3)
我想这是一个错误(关于文件编码),它已经在RStudio和knitr中修复了一段时间。请升级RStudio (v0.97.316)和knitr (v1.0.5),然后查看问题是否仍然存在。另见FAQ 1:)
最糟糕的是,您可以使用操作系统的本机编码(File => Save with Encoding
)重新保存您的Rmd文档。您描述的问题的根本原因是RStudio使用options(encoding = ...)
来声明文档的编码,但这是不合适的,因为它改变了整个R会话的编码(我承认这是由于我的错误指令一开始对他们而言)。现在,RStudio能够以非侵入方式将编码传递给knitr
。