Dies ist die standardisierte Precipitation Index Software von http://drought.unl.edu/MonitoringTools/DownloadableSPIProgram.aspx verwenden.
Dies scheint eine funktionierende Lösung mit Windows zu geben (aber nicht ohne Warnungen!)
Fisrt die Software herunterladen und Beispieldateien
# 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)
Von Seite 3 der Hilfedatei basic-SPI- program-information.pdf Bei der obigen Verbindung sollte der Befehlszeilencode das Formular spi 3 6 12 <infile.dat >outfile.dat
haben, jedoch keiner der folgenden funktionierte (nur von der Befehlszeile nicht in R), und verschiedene Iterationen, wie Parameter übergeben werden.
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 von Running .exe file with multiple parameters in c# die akzeptierte Antwort mit scheint zu funktionieren. Das ist wieder von der Kommandozeile
cd C:\Users\david\spi && (echo 2 && echo 3 && echo 6 && echo wymo.cor && echo out1.dat) | spi_sl_6
Also das in R laufen Sie können diese wickeln in einem shell
(Sie werden den Pfad, wo Sie die exe gespeichert haben ändern müssen)
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, denke ich aus der echo
(in R, aber nicht von der Befehlszeile), aber die Ausgabedatei wird erzeugt.
Angenommen, Sie können alle Echoaufrufe leicht automatisieren. Sie müssen lediglich die Zeitparameter eingeben.
Mit 'Eingabeparameter' meinst du Befehlszeilenargumente oder meinst du, sobald du das Programm öffnest, sind das Dinge, die du in das Programm eingeben würdest? Die erste Situation ist einfach zu bewältigen. Die zweite ... ist möglicherweise nur möglich, wenn das Programm geändert wird. – Dason
Das scheint (imo) noch keine R Frage zu sein. Können Sie die Parameter über die Befehlszeile an das EXE-Programm senden (gerade jetzt mit R umgehen). Wenn nicht, sind Sie sicher, dass Sie können, da nicht alle Programme dies erleichtern. – user20650
@ Liangzhong; Sie müssen sicherstellen, dass das exe-Programm über die Möglichkeit verfügt, Parameter an der Befehlszeile einzugeben. Wenn Sie dies tun können, dann können Sie es an einen Systemaufruf übergeben mit R – user20650