【发布时间】:2019-01-17 18:19:54
【问题描述】:
在包的tests 部分,我通常在一些xxx.R 文件上运行R CMD BATCH,这会创建一个xxx.Rout.save。问题是失败的all.equal() 将创建非ASCII 字符。这会在稍后运行R CMD check 时产生错误:
比较‘xxx.sim.Rout’和‘xxx.sim.Rout.save’
-"组件\"short.run\":平均相对差:0.2180449"
-“组件'short.run':平均相对差:0.2180449”
这是因为 all.equal() 创建了非 ASCII 字符:
> tools::showNonASCII(all.equal(list(a=1), list(a=2)))
Component <e2><80><9c>a<e2><80><9d>: Mean relative difference: 1
似乎R CMD check 正在运行xxx.R 脚本,其选项与我在运行R CMD BATCH 时使用的选项不同...请注意,R 扩展指南说:
请注意,比较将在最终用户的语言环境中进行, 因此,如果可能,目标输出文件应该是 ASCII。
但不清楚如何确保R CMD BATCH 以 ASCII 格式创建输出?我试过了,R CMD BATCH --encoding=ASCII 但它仍然会创建一个非 ASCII 文件!?
cat("all.equal(list(a=1), list(a=2))", file ="xxx.R")
system("R CMD BATCH --encoding=ASCII xxx.R xxx.Rout")
tools::showNonASCIIfile("xxx.Rout")
file.remove(c("xxx.R", "xxx.Rout"))
确实给了:
"分量a:平均相对差:1"
【问题讨论】:
标签: r encoding r-package rscript