【问题标题】:Knitr chunk is importing a subset of the records from *.csv as same code in RKnitr 块正在从 *.csv 导入记录的子集作为 R 中的相同代码
【发布时间】:2012-09-07 17:22:42
【问题描述】:

Rstudio 版本 0.96.331 和 knitr 版本 0.8

我认为我的问题已经通过更新 RStudio 和库得到了解决......但是:

R 中的以下运行为我提供了 940 个唯一的 Table.ID 值。在 knitr 块中运行,我得到 228 个唯一值和以下警告:

"在输入连接'http://www2.census.gov/acs2010_5yr/summaryfile/Sequence_Number_and_Table_Number_Lookup.txt'上发现无效输入

我不明白为什么这两种方法之间存在区别。

Sequence <- read.csv("http://www2.census.gov/acs2010_5yr/summaryfile/Sequence_Number_and_Table_Number_Lookup.txt",
                   stringsAsFactors=FALSE)
unique(Sequence$Table.ID)

【问题讨论】:

  • 您使用的是哪个版本的rstudioknitr
  • 请用sessionInfo()的输出更新您的问题
  • 现在尝试使用 fileEncoding 参数(请参阅下面的更新答案)。
  • 成功了!谢谢。现在,您知道为什么必须在 knitr 中使用 fileEncoding 参数而不是在控制台中的任何文档吗?
  • @MichaelWilliams 这是因为 RStudio 在调用 knitr 之前设置了 options(encoding = 'UTF-8')。可能值得向 RStudio 开发人员报告,或者您可以在阅读文件之前重置为默认 options(encoding = 'native.enc')

标签: r knitr


【解决方案1】:

在 Rstudio 版本 0.96.331 和 knitr 版本 0.8 上运行良好

我的.Rmd 文件:

        knitr test for length
        ========================================================
        This should successfully return a length of 940

    ```{r}
    Sequence <- read.csv("http://www2.census.gov/acs2010_5yr/summaryfile/Sequence_Number_and_Table_Number_Lookup.txt", 
fileEncoding = "iso8859-8", stringsAsFactors = FALSE)
    length(unique(Sequence$Table.ID))
    ```

导致:

【讨论】:

  • 如您所说,将您提供的fileEncoding 设置为read.csv 是解决方案。对我有用的值是native.enc,我通过在交互式会话中运行getOption("encoding") 找到了它。 knitr 将其更改为 UTF-8
猜你喜欢
  • 1970-01-01
  • 2018-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-25
相关资源
最近更新 更多