Wie kann ich R-Lesen Sie meine Umgebungsvariablen?
Ich bin mit R auf EC2-spot-instances und ich brauche R zum beenden der Instanz an und kündigen Sie den spot-instance-Anforderung, sobald das Skript ausgeführt wurde.
Für die ich eingestellt habe das "Anforderungs-ID" in eine Umgebungs-variable in /.bashrc
und mein plan war es, rufen Sie einfach den folgenden code in R, sobald das script fertig ist
system("ec2-cancel-spot-instance-requests $SIR")
Das Problem, das ich habe ist, dass R nicht "sehen" den gleichen Umwelt-Variablen, die ich gesehen, wenn ich env
von außen R damit der Befehl nicht funktioniert.
Habe ich überprüft und wenn ich meine Umgebungsvariablen an /etc/environment
R ist in der Lage, um zu sehen, diejenigen Variablen, aber hier ist das andere problem. Da diese Variablen sind dynamisch (die Instanz-ID und die request-ID ist jedes mal anders, eine spot-instance ist angelegt), bei mir läuft ein Skript zu erstellen, die Sie in form von:
export SIR=`cat /etc/ec2_instance_spot_id.txt`
Wo sich diese Datei enthält die dynamischen ID
So, wie kann ich das einfügen "dynamische" Umwelt-Variablen in /etc/environment
? Oder, wie kann ich R Lesen Sie die Umgebungsvariablen an /.bashrc
?
Jeden Tipp in die richtige Richtung, wird sehr geschätzt!
- Ich fand, dass die Variablen in ~/.Profil zugänglich waren aus Sys.getenv(), aber nicht von ~/.bashrc. Ich hatte zu tun
source ~/.profile
, dannR
von einem terminal aus, um es arbeiten nach dem hinzufügen neuer Variablen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Du willst
Sys.getenv()
wie inSys.getenv("PATH")
sagen.Oder für Ihr Beispiel, versuchen Sie
Als für die Einstellung der Variablen beim Start, siehe
help(Startup)
kennen zu lernen~/.Renvironment
etcnames(s <- Sys.getenv())
dannSIR
ist nicht da, wenn ichSIR <- Sys.getenv("SIR")
es gibt nichts, SIR, aber wenn ich exit R und ichenv
dass die Liste der Umgebungsvariablen ist völlig anders als die, die ich bekomme, wenn ichSys.getenv()
und dort kann ich sehen, SIR, und andere, die ich brauche. Ich gebe einen Blick aufRenvironment
, noch einmal vielen Dank.Sys.setenv()
und im Grunde kopieren meine Umwelt-Variablen, die von außerhalb R zu R. Obwohl das macht mein Skript arbeiten, ich wünschte, ich könnte verstehen, warum es ist eine ganze Reihe von verschiedenen Umgebungsvariablen witting RMit
Sys.getenv()
sehen Sie alle Variablen aufgelistet, die in der aktuellen Umgebung.Allerdings sind Sie unterschiedlich von denen in Ihrer aktuellen shell, zum Beispiel angegeben in .Profil.
Die Variablen für R erstellen Sie ein
.Renviron
- Datei in Ihrem home-Verzeichnis und schreiben Sie dortNach einem Neustart von R werden Sie in der Lage sein um Zugriff auf diese variable mit
Ich bin ziemlich neu auf R, aber mein Ansatz war dieser: ich hatte die Projekt-level-environment-Variablen gespeichert
.env
- Datei. Zugänglich zu machen, die in R verwendete ichDann Zugriff auf eine bestimmte variable
Und es funktionierte perfekt.