2017-07-19 3 views
2

R(システム)のコマンドを使用して.exeプログラム(spi_sl_6.exe)を呼び出そうとしますが、「システム」を使用してプログラムにパラメータを入力することはできません。フォローウィングは私のコマンドとパラメータです:system("D:\\working\spi_sl_6.exe")Rを使用してexeプログラムと入力パラメータを呼び出す方法は?

https://i.stack.imgur.com/I6Try.jpg 私はネット上で長い時間を探しています。しかし、使用しないでください。これを達成する方法を教えてください。前もって感謝します。

+0

「入力パラメータ」とは、コマンドライン引数を意味しますか、プログラムを開いたら、プログラムに入力するものですか?最初の状況は扱いやすいです。プログラムが修正されない限り、2番目の...は不可能かもしれません。 – Dason

+0

これはまだRの質問には見えません。コマンドラインからexeプログラムにパラメータを送ることができますか?(今すぐRを使って回避する)そうでない場合、すべてのプログラムがこれを容易にするわけではないので、あなたはできると確信しています。 @ Liangzhong; – user20650

+0

; exeプログラムにコマンドラインでパラメータを入力する機能があることを確認する必要があります。これを行うことができれば、R – user20650

答えて

1

あなたはsprintfを使用してコマンドを構築することができます。

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

か(私は、このオプションを好む)system2を使用して:

system2(cmd_name, args = c(param1,param2)) 
+0

本当にありがとうございました。あなたの助言によると、私はコマンドを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 "))'しかし、exeプログラムは動作しません。メッセージは、「出力ファイルを開けませんでした」というメッセージです。私の限定されたRの経験では、私は理由を知らない。 – Liangzhong

1

これは http://drought.unl.edu/MonitoringTools/DownloadableSPIProgram.aspxから標準化された降水インデックスのソフトウェアを使用しています。

これは

・ファーストは、ソフトウェアをダウンロード(!ではなく、警告なし)のWindowsを使用して作業溶液を得ているようだとの例では、ヘルプファイル基本-SPI-の3ページから

# 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) 

をファイル上記のリンクでプログラムinformation.pdfは、コマンドライン・コードの形式spi 3 6 12 <infile.dat >outfile.datでなければならない、しかし、 いずれ下記加工された(非Rでだけからコマンドライン)、およびパラメータを渡す方法の種々の反復。

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 

しかし、Running .exe file with multiple parameters in c# から受け入れ答えを使用して動作するようです。それはあなたがshell(あなたがexeファイルを保存した場所へのパスを変更する必要があります)

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

でこれをラップすることができますので、Rでこれを実行するために、再度、コマンドラインから

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

ですout1.datout2.datは同じである必要があります。

これは警告メッセージをスローし、私はecho(Rではなく、コマンドラインから)からだと思いますが、出力ファイルが生成されます。

は、すべてのエコーがそうあなたがする必要があるすべては、入力時パラメータである、sligtly呼び出しを自動化することができたとします。

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) 
+1

お返事ありがとうございます。あなたは私の問題を完全に解決しました。 – Liangzhong

+0

私は完全にはわかりませんが、Pですが、大歓迎です。 Windowsコマンドラインに精通している人にとって、改善のための提案を提供することが容易になることを願って、答えに完全な実例を追加しました。 – user20650

関連する問題