2010-01-19 4 views
26

Existe-t-il un moyen simple de déterminer par programme si un script R est en cours d'exécution dans Windows ou Linux?R: détermine si un script s'exécute sous Windows ou Linux

+0

oui! Je connais celui-ci – Dan

+0

Je suis un peu en retard à cette fête, mais considérez cette recherche de code Google: http://www.google.com/codesearch?as_q=linux+windows&btnG=Search+Code&hl=fr&as_lang=r - à savoir ' as_lang = r 'pour obtenir des solutions R uniquement lorsque vous recherchez des chaînes' linux 'et' windows '. Et c'est juste là ... –

+0

fantastique! Je ne connaissais pas la recherche de code GOOG. J'ai lutté et lutté pour chercher ceci mais ai continué à obtenir des résultats sans rapport. –

Répondre

28
if(.Platform$OS.type == "unix") { 
} else { 

} 
+0

je n'aurais pas dû gaspiller ce temps avec le premier commentaire. Battu au coup de poing à nouveau. – Dan

+1

Si cela avait été un commentaire utile, je serais sympathique ... Mais celui-là était vraiment du temps perdu! :) –

+0

Merci! Je ne pouvais pas m'en souvenir pour sauver ma vie. –

6
.Platform$OS.type 

retours

[1] "unix" 

ou autre chose.

+0

Voir aussi R.version() pour d'autres choses de type OS. – Spacedman

+0

hmm .. R.version() ne fonctionne pas ... peut-être Sys.info()? –

+0

ahh .. capitalisation. C'est R.Version() –

10
Sys.info()["sysname"] 
2

je lance le même code de l'une des trois machines Linux ou Windows. J'utilise ce qui suit pour configurer des répertoires de travail:

if(R.Version()$os == "linux-gnu" { 
    dir.pre <- "/home" 
} else { 
    dir.pre <- "C:/Users" 
} 

Sur mon serveur linux debian et mon ordinateur portable Ubuntu:

> .Platform$OS.type 
[1] "unix" 
> R.Version()$os 
[1] "linux-gnu" 

Sur mon ordinateur portable de Windows 10, dans rstudio:

> .Platform$OS.type 
[1] "windows" 
> R.Version()$os 
[1] "mingw32" 

N'hésitez pas à modifier et ajouter à cette liste.

Questions connexes