【问题标题】:Difference output running Rscript vs source运行 Rscript 与源的差异输出
【发布时间】:2015-12-02 02:40:59
【问题描述】:

我有以下脚本:

city <- c("Екатеринбург", NA, "Курск", "Псков",
          "березники", "Челябинск", NA, "москва",
          "москва", "Петергоф/Санкт-Петербург",
          "Петергоф/Санкт-Петербург", "Волгоград",
          "Олегегорск", "СПб", "Москва", "Москва",
          "Москва ", "Санкт-Петербург")
city[grep("^(москва|мск|msk)", city, ignore.case = TRUE)] <- "Москва"
city[grep("питер|спб|spb|петербург", city, ignore.case = TRUE)] <- "Санкт-Петербург"
city[grep("Москва|Санкт-Петербург", city, invert = TRUE)] <- "Другие города"
print(city)

当我运行Rscript test.R 时,我得到了一些结果:

% Rscript test.R
[1] "Другие города"   "Другие города"   "Другие города"   "Другие города"
[5] "Другие города"   "Другие города"   "Другие города"   "Москва"
[9] "Москва"          "Санкт-Петербург" "Санкт-Петербург" "Другие города"
[13] "Другие города"   "Санкт-Петербург" "Москва"          "Москва"
[17] "Москва"          "Санкт-Петербург"

当我运行 source("test.R") 时,我得到了不同的结果:

% Rscript -e 'source("test.R")'
[1] "Другие города"            "Другие города"           
[3] "Другие города"            "Другие города"           
[5] "Другие города"            "Другие города"           
[7] "Другие города"            "Москва"                  
[9] "Москва"                   "Петергоф/Санкт-Петербург"
[11] "Петергоф/Санкт-Петербург" "Другие города"           
[13] "Другие города"            "Другие города"
[15] "Москва"                   "Москва"
[17] "Москва "                  "Санкт-Петербург"

我在以下情况下得到了正确的结果:

  • Rscript运行脚本:Rscript test.R
  • 在 R 会话中逐行键入命令

source() 我得到了不正确的结果(Rscript -e 或在 R 会话中)。

系统信息可能会有所帮助:

sessionInfo()
R version 3.2.1 (2015-06-18)
Platform: x86_64-unknown-linux-gnu (64-bit)
Running under: Arch Linux

locale:
    [1] LC_CTYPE=ru_RU.UTF-8       LC_NUMERIC=C               LC_TIME=ru_RU.UTF-8        LC_COLLATE=C              
[5] LC_MONETARY=ru_RU.UTF-8    LC_MESSAGES=ru_RU.UTF-8    LC_PAPER=ru_RU.UTF-8       LC_NAME=C                 
[9] LC_ADDRESS=C               LC_TELEPHONE=C             LC_MEASUREMENT=ru_RU.UTF-8 LC_IDENTIFICATION=C       

attached base packages:
    [1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
    [1] tools_3.2.1

【问题讨论】:

  • 输入Rscript --version会得到什么
  • R scripting front-end version 3.2.1 (2015-06-18).
  • 在没有 -e 的情况下运行 Rscript ;只需输入Rscript test.R...结果是否相同?
  • 使用Rscript test.R 一切正常(请参阅问题中的输出)。

标签: r encoding rscript


【解决方案1】:

这与文件编码有关。将以下选项添加到sourceencoding="UTF-8", verbose=T

如果您不使用编码选项(保持 verbose=T 选项),您将在输出顶部看到默认编码为 encoding = "native.enc",这不是您想要的希腊字符。

【讨论】:

  • 非常感谢。 Rscript -e 'source("test.R", encoding="UTF-8")' 按预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-11-25
  • 1970-01-01
  • 2017-06-14
  • 2011-01-05
  • 2017-01-19
  • 1970-01-01
相关资源
最近更新 更多