我正在尝试从BioSeqClass包中运行以下代码,但是出现错误消息: 系统错误(命令,实习生= TRUE):找不到“ C:\ Program”
selectWeka(data,evaluator =“ CfsSubsetEval”,search =“ BestFirst”,n)
答案 0 :(得分:0)
这是BioSeqClass
调用Java的方式的问题:它使文件名不受保护/未加引号,并且R的system
和system2
命令由于不强制使用引号而令人恐惧。 (如果您想直接自己使用这些命令,强烈建议您使用processx
之类的东西。)
一个应该会产生问题或错误报告,但是我不知道如何使用Bioconductor做到这一点,并且它们在github(https://github.com/Bioconductor-mirror)上的镜像已失效,所以我在那里无所适从。希望有人能提供更多信息。
问题不明显是由于weka.jar
所在的位置还是其他参数之一引起的。您可以通过调试selectWeka
函数并在系统调用之前检查command
的值来找出问题所在。寻找路径的Program Files
组件。
如果问题出在weka.jar
上,则表明您正在C:\Program Files\
下的某个位置安装软件包,根据我的经验,这有两个方面的不正确做法:
对于许多我不记得的问题(但这一问题再次引起了讨论),我从未将R安装在C:\Program Files\...
下的默认位置;相反,我将其安装在新目录C:\R\R-3.5.3
(基于版本)下,然后从那里开始。如果在大学/公司系统上,您可能对此无能为力。
由于它不在base-R软件包中,因此,这表明您不是在使用个人图书馆位置(软件包集合),还是出于某种原因将您的个人图书馆放置在C:\Program Files
下。如果是前者,我强烈建议您不要在base-R安装目录中安装新软件包,而要使用自己的软件包。参见?.libPaths
和有关该主题的许多其他教程/讨论。使用packrat
或checkpoint
也可以缓解此问题。
如果问题出在trainFile
上(如果我正确地阅读了源代码),那么您的“永久”修复程序将更改Windows放置临时文件的位置,因为此trainFile
是一个临时文件为此功能运行专门创建的。如果这是您的问题,我将由您自行解决。
无论如何,您可能没有时间或需要制定更永久的解决方案,您只需要运行一次或两次,然后继续。对于该修复程序:
debug(selectWeka)
,并且一旦定义了command
(下一个要执行的命令是tmp <- system(command,intern = TRUE)
),请运行以下代码来固定{{1}的值}:
command
(为便于记录,我所做的只是向每个 if(search=="Ranker"){
command = paste("java -cp ", shQuote(file.path(.path.package("BioSeqClass"), "scripts", "weka.jar")),
" weka.attributeSelection.", evaluator, " -i ", shQuote(trainFile),
" -s \"weka.attributeSelection.", search, " -N ", n, "\"", sep="" )
}else{
command = paste("java -cp ", shQuote(file.path(.path.package("BioSeqClass"), "scripts", "weka.jar")),
" weka.attributeSelection.", evaluator, " -i ", shQuote(trainFile),
" -s weka.attributeSelection.", search, sep="" )
}
添加了shQuote
两次。)确认paste
现在在事物周围加上了引号,例如
command
然后,您可以继续调试器,并使其运行。
(我希望您没有打给Browse[2]> command
[1] "java -cp \"C:\\Program Files\\...\\weka.jar" weka.attributeSel... -i \"c:\\path\\to\\some\\tempfile\" ...
的数百个电话。)
注意:我不使用selectWeka
,所以我说的都是出于推测和推论。我可能错误地定位了错误的来源。而且由于我不知道自己在做什么,因此我没有测试BioSeqClass
中修改后的command
分配。我相信selectWeka
是正确的选择,但是您可能需要使用shQuote(...)
或sQuote
来代替,但我不确定系统的设置方式。