2012-06-22 14 views
11

Niektóre możliwości to:W R, jaki jest kanoniczny sposób wykrywania, czy system operacyjny jest 64-bitowy?

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

Czy jest jakiś powód do preferowania jednej metody nad drugą?

pokrewne: detecting operating system in R (e.g. for adaptive .Rprofile files)

+0

wierzę ci będzie wszystko nie działa co najmniej w architekturze PowerPC i Itanium 64-bit. 'grep'ing' .Platform $ r_arch' dla "64" może działać dla większości architektur, ale po co zawracać sobie głowę, gdy DWin dostarczył odpowiedź. – jthetzel

+0

Prawdopodobnie zawiedzie również w przypadku wersji Solaris. –

Odpowiedz

12

Właściwie żadna z tych metod będzie kanonicznym, które biorę na myśli „co by Brian Ripley powiedzieć”. Wypróbuj to:

?.Machine 

sizeof.pointer ........ liczba bajtów w typie C SEXP. Będzie 4 na 32-bitowych buduje i 8 w 64-bitowych buduje R.

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

Jak dla swoich nominacjach tylko jeden z nich zwraca TRUE na moim komputerze:

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