问题 在R中,检测操作系统是否为64位的规范方法是什么?


一些可能性包括:

Sys.info()["machine"] == "x86-64"
.Platform$r_arch == "x64"
version$arch == "x86_64"

是否有理由更喜欢一种方法而不是另一种方法?

有关: 检测R中的操作系统(例如,用于自适应.Rprofile文件)


11471
2018-06-22 15:22


起源

我相信至少PowerPC和Itanium 64位架构都会失败。 grepING .Platform$r_arch 因为“64”可能适用于大多数架构,但为什么在DWin提供答案时会烦恼。 - jthetzel
Solaris构建可能也会失败。 - 42-


答案:


实际上,这些方法都不是规范的,我认为这意味着“Brian Ripley会说什么”。尝试这个:

?.Machine

sizeof.pointer ........ C SEXP类型中的字节数。在32位版本上将是4,在64位版本的R上将是8。

 64bit <- .Machine$sizeof.pointer == 8
 64bit
 #[1] TRUE

至于你的提名,我的机器上只有其中一个返回TRUE:

> Sys.info()["machine"] == "x86-64"
machine 
  FALSE 
> .Platform$r_arch == "x64"
[1] FALSE
> version$arch == "x86_64"
[1] TRUE

12
2018-06-22 15:37