gpt4 book ai didi

r - 如何使用R调用exe程序和输入参数?

转载 作者:行者123 更新时间:2023-12-04 14:25:43 25 4
gpt4 key购买 nike

我想使用R(系统)的命令调用.exe程序(spi_sl_6.exe),但是我无法使用“系统”向程序输入参数。下面是我的命令和参数:system("D:\\working\spi_sl_6.exe")

/image/I6Try.jpg我在网上找了很久。但是没有用。请帮助或尝试提供一些想法如何实现这一目标。提前致谢。

最佳答案

这是使用来自 http://drought.unl.edu/MonitoringTools/DownloadableSPIProgram.aspx .

这似乎提供了一个使用 Windows 的可行解决方案(但并非没有警告!)

首先下载软件和示例文件

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

从上面链接的帮助文件 basic-spi-program-information.pdf 的第 3 页开始,命令行代码的格式应为 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# 的已接受答案似乎工作。这又是来自命令行

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

因此,要在 R 中运行它,您可以将其包装在 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)

out1.datout2.dat应该是一样的。

这会引发警告消息,我认为来自 echo (在 R 中但不是来自命令行)但生成了输出文件。

假设你可以自动执行所有的回声调用,那么你需要做的就是输入时间参数。

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)

关于r - 如何使用R调用exe程序和输入参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45198319/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com