Wie nennen exe-Programm und input-Parameter mit R?

Möchte ich nennen .exe-Programm (spi_sl_6.exe) mit einem Befehl von R (- system), kann ich jedoch nicht input-Parameter an das Programm mit „system“. Die followwing ist mir Befehl und Parameter:system("D:\\working\spi_sl_6.exe")

Wie nennen exe-Programm und input-Parameter mit R?
Ich bin auf der Suche für eine lange Zeit on-net. Aber keine Verwendung. Bitte um Hilfe oder versuchen Sie geben einige Ideen, wie Sie diese erreichen. Vielen Dank im Voraus.

  • Durch „input-Parameter“ meinst du die Befehlszeile oder meinst du, sobald Sie das Programm öffnen, das sind Dinge, die Sie würde in das Programm eingegeben? Die erste situation ist einfach zu behandeln. Das zweite… ist vielleicht nicht möglich, es sei denn, das Programm wird geändert.
  • Dies scheint nicht (imo) ein R-Frage noch nicht. Sind Sie in der Lage, zum senden der Parameter an die exe-Programm von der Befehlszeile aus (umgehen mit R gerade jetzt). Wenn nicht, sind oyu sicher, Sie können, da nicht alle Programme dies erleichtern.
  • Sie müssen sicherstellen, dass die exe-Programm verfügt über eine Funktion zur Eingabe von Parametern auf der Kommandozeile. Wenn Sie dies tun können, dann können Sie übergeben es an einen system-Aufruf mit Hilfe von R
  • Dason vielen Dank für Ihre Antwort mit freundlichen GRÜßEN. Ich meine, dass fünf Parameter eingegeben werden in das Programm sobald ich das Programm öffnen, nur wie auf dem Bild.
  • user20650; ich Danke Ihnen für Ihre Antwort mit freundlichen GRÜßEN. Wenn ich den Befehl system2("D:\\working\\SPI\\test\\spi_sl_6.exe") habe ich keine chance zur Eingabe der Parameter. Mybe kann ich nicht verwenden Sie R, um das problem zu beheben.
InformationsquelleAutor Liangzhong | 2017-07-19

 

2 Replies
  1. 2

    Diese ist mit der Standardisierte Niederschlags-Index-software von
    http://drought.unl.edu/MonitoringTools/DownloadableSPIProgram.aspx.

    Diese zu geben scheint eine funktionierende Lösung mit Windows (aber nicht ohne Warnungen!)

    Ersten download der software und Beispiel-Dateien

    # Create directory to download software
    mydir <- "C:\\Users\\david\\spi"
    dir.create(mydir)
    
    url <- "http://drought.unl.edu/archive/Programs/SPI"
    download.file(file.path(url, "spi_sl_6.exe"), file.path(mydir, "spi_sl_6.exe"), mode="wb")
    
    # Download example files
    download.file(file.path(url, "SPI_samplefiles.zip"), file.path(mydir, "SPI_samplefiles.zip"))
    # extract one example file, and write out
    temp <- unzip(file.path(mydir, "SPI_samplefiles.zip"), "wymo.cor")
    dat <- read.table(temp)
    # Use this file as an example input
    write.table(dat, file.path(mydir,"wymo.cor"), col.names = FALSE, row.names = FALSE)

    Ab Seite 3 der Hilfe-Datei basic-spi-Programm-Informationen.pdf unter dem oben genannten link den Befehl Zeile code sollte die form spi 3 6 12 <infile.dat >outfile.dat jedoch
    keines der folgenden gearbeitet (nur von der Kommandozeile aus, die nicht in R), und die verschiedenen Iterationen von Verfahren zum übergeben von Parametern.

    C:\Users\david\spi\spi_sl_6 3 <C:\Users\david\spi\wymo.cor >C:\Users\david\spi\out.dat
    cd C:\Users\david\spi && spi_sl_6 3 <wymo.cor >out.dat

    Jedoch mit dem akzeptierten Antwort von Läuft .exe-Datei mit mehreren Parametern in c#
    scheint zu funktionieren. Das ist wieder von der Befehlszeile aus

    cd C:\Users\david\spi && (echo 2 && echo 3 && echo 6 && echo wymo.cor && echo out1.dat) | spi_sl_6 

    So, diese laufen in R können Sie wickeln Sie diese in ein shell (Sie müssen den Pfad zu ändern, wo Sie gespeichert haben, die exe-Datei)

    shell("cd C:\\Users\\david\\spi && (echo 2 && echo 3 && echo 6 && echo wymo.cor && echo out2.dat) | spi_sl_6", intern=TRUE)

    out1.dat und out2.dat sollten gleich sein.

    Dies wirft Warnmeldungen, ich glaube aus echo (in R, aber nicht von der Befehl-Linie), aber die Ausgabe-Datei erzeugt.

    Nehme an, Sie können eine Automatisierung der echo ruft sligtly, also alles, was Sie tun müssen, ist die Eingabe der Zeit-Parameter.

    timez <- c(2, 3, 6)
    stime <- paste("echo", timez, collapse =" && ")
    infile <- "wymo.cor"
    outfile <- "out3.dat"
    spiCall <- paste("cd", mydir, "&& (" , stime, "&& echo", infile, "&& echo", outfile, " ) | spi_sl_6")
    shell(spiCall)
    • Danke für Eure Antworten. Sie löste mein problem perfekt.
    • Ich weiß nicht, zu perfekt ;P, aber Sie sind sehr willkommen. Ich fügte hinzu, ein vollständiges Beispiel zu der Antwort, in der Hoffnung, dass es macht es einfacher für jemanden mit mehr Vertrautheit mit der Windows Kommandozeile, um Vorschläge zu verbessern.
  2. 1

    Können Sie konstruieren den Befehl mit sprintf :

    cmd_name <- "D:\\working\spi_sl_6.exe"
    param1 <- "a"
    param2 <- "b"
    system2(sprintf("%s %s %s",cmd_name,param1,param2))

    Oder mit system2( ich bevorzuge diese Variante):

    system2(cmd_name, args = c(param1,param2))
    • Vielen Dank für Ihre Antwort mit freundlichen GRÜßEN. Nach Ihren Rat, Baue ich den Befehl mit system2 system2("D:\\working\\SPI\\test\\spi_sl_6.exe",args = c(2,3,6,"D:\\working\\SPI\\test\\Kita.cor","D:\\working\\SPI\\test\\restult.txt")) Jedoch das exe-Programm nicht funktionieren kann. Die Nachricht ist wie folgt „could not open output file“ . In meiner begrenzten Erfahrung mit R ,ich weiß nicht, warum.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.