我可以用R与windows控制台程序交互吗

我可以用R与windows控制台程序交互吗,r,shell,R,Shell,编辑:我正在通过Genepop设置文件解决这个问题,但我也对这个问题的一般问题感兴趣,我可以用R与windows控制台程序交互吗? 我想通过从R向windows控制台发出命令,自动使用基因分析程序。打开程序很简单,但是我不知道打开后是否可以进入下一个连续行。我需要做的第一件事是输入一个文本文件。如果我能传递任何一个简单的小字符串,我就会知道我是否能得到一条消息,告诉我我能让它工作 > shell(".../Genepop.exe") Genepop version 4.2.2 Unabl

编辑:我正在通过Genepop设置文件解决这个问题,但我也对这个问题的一般问题感兴趣,我可以用R与windows控制台程序交互吗?

我想通过从R向windows控制台发出命令,自动使用基因分析程序。打开程序很简单,但是我不知道打开后是否可以进入下一个连续行。我需要做的第一件事是输入一个文本文件。如果我能传递任何一个简单的小字符串,我就会知道我是否能得到一条消息,告诉我我能让它工作

> shell(".../Genepop.exe")
Genepop version 4.2.2

Unable to open file genepop.txt
Unable to open file genepop.txt
Genepop version 4.2.2


Name of the data file ? (press ENTER to quit)
>
如果我只打开程序而不要求在R中输入下一行,它就会退出。这和我的预期差不多。然后,我尝试使用分号,就像它在shell帮助文件中提到的命令参数一样

。。。所以命令 可以是shell认为可执行的任何内容,包括shell 脚本,它可以包含多个以;分隔的命令

但这似乎没有帮助

>first_line <- paste(genepopDir, genepopFile, sep = "/")
>data_file <- "genepopInput"
>test <- paste(first_line,data_file, sep = ";")
>shell(test)
Genepop version 4.2.2

Unable to open file genepop.txt
Unable to open file genepop.txt

Reading settings file cmdline.txt...
Genepop version 4.2.2


Name of the data file ? (press ENTER to quit)
>第一行数据文件测试外壳(测试)
Genepop版本4.2.2
无法打开文件genepop.txt
无法打开文件genepop.txt
正在读取设置文件cmdline.txt。。。
Genepop版本4.2.2
数据文件的名称?(按ENTER键退出)
也许我可以用一个字符向量?在输入参数下有一些文档向我暗示,这就是我应该尝试的

> test <- c(first_line, data_file)
> shell(test)
Error in system(command, as.integer(flag), f, stdout, stderr) : 
  character string expected as first argument
>测试外壳(测试)
系统错误(命令,如.integer(标志)、f、stdout、stderr):
应将字符串作为第一个参数

我使用的是R3.1、Windows7、x86。

运行Genepop程序时是否有指定文件的选项?您可以使用
paste
sprintf
构建命令行,然后传递到
system

您的命令可能更像:

shell( paste( first_line, data_file ) )

另一个可行的选项是使用
管道
功能打开一个到程序的管道,然后可以使用管道向程序发送信息。通常情况下,这只适用于一种方式,您需要确切地知道程序预期的内容、顺序、时间等,然后发送这些字符串。

尝试以交互方式控制这样的程序不是一个好主意,幸运的是,看起来您不必处理这些问题。Genepop程序还将获取一个设置文本文件,您可以在其中指定要运行的所有命令和选项。然后你就可以跑了

Genepop settingsFile=SampleSettings.txt
运行文件中的命令。其中一个选项是
GenepopInputFile
,您可以在其中指定输入数据文件,而不是尝试将其发送到shell。您可以首先在R中动态构建设置文件,并在调用Genepop之前将其写入文件


这一信息来自互联网。我建议您进一步阅读,以了解与该程序交互的最佳方式。

是否要在外部流程的stdin中输入一些内容?考虑它的输入参数。我正在研究设置文件。我忘了把它包括进去,编辑了这篇文章。你能告诉我为什么你认为我问的不是个好主意吗?是因为命令发送时很难控制吗?