1

我正在尝试使用 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 包含三行数据。当我降价打印 dealInfo 的内容时,我看到在第一次出现“é”之后什么都没有被读取。我相信这解释了第二个警告。

我不确定为什么控制台和降价在读取同一个文件时表现不同,看起来语言环境和其他配置参数在两种环境中都是相同的。任何帮助将不胜感激。谢谢你。

4

1 回答 1

3

我猜这是一个错误(关于文件编码),不久前在 RStudio 和 knitr 中都已修复。请升级RStudio (v0.97.316)knitr ( v1.0.5) ,看看问题是否仍然存在。另请参阅常见问题解答 1 :)

在最坏的情况下,您可以使用操作系统的本机编码 ( File => Save with Encoding) 重新保存 Rmd 文档。您描述的问题的根本原因是 RStudiooptions(encoding = ...)用于声明文档的编码,但这是不合适的,因为它改变了整个 R 会话的编码(我承认这是由于我在非常开始)。现在 RStudio 能够以knitr非侵入性的方式将编码传递给。

于 2013-02-09T23:24:03.823 回答