当我在Windows与Ubuntu远程服务器上运行代码时,我有一个不同的向量排序.
视窗:
> u <- getNodes(network)
> head(u)
[1] "-1336623650" "-1749477680" "539" "-1036241023" "6135" "-44987577"
> uid <- sort(u)
> head(uid)
[1] "-1000019199" "-1000022360" "-1000039153" "-1000044219" "-1000069199" "-1000099640"
Run Code Online (Sandbox Code Playgroud)
Ubuntu的:
> u <- getNodes(network)
> head(u)
[1] "-1336623650" "-1749477680" "539" "-1036241023" "6135"
[6] "-44987577"
> uid <- sort(u)
> head(uid)
[1] "10" "100" "1000" "10000" "-1000019199"
[6] "-1000022360"
Run Code Online (Sandbox Code Playgroud)
R的两个实现都加载了相同的包,并且是相同的R版本(3.3.1).Ubuntu是13.10,Windows是Windows 7.
R中的字符串排序(您正在执行的操作)基于"区域设置",这对于Windows和Linux系统是不同的.但是,要小心.没有语言环境会按正确的数字顺序对这些字符串进行排序,如果您想要数字顺序,则必须对数字向量进行排序.
从每个系统中获取Sys.getlocale("LC_COLLATE")的值并进行比较.对于我的包,我在入口点执行以下操作,并在packageStartupMessage中报告它.
collateOrigValue<-Sys.getlocale("LC_COLLATE")
on.exit(Sys.setlocale("LC_COLLATE",collateOrigValue), add=TRUE)
Sys.setlocale("LC_COLLATE","C")
Run Code Online (Sandbox Code Playgroud)
另见https://stat.ethz.ch/R-manual/R-devel/library/base/html/locales.html
| 归档时间: |
|
| 查看次数: |
366 次 |
| 最近记录: |