在R中,我想列出目录中的文件,并捕获输出,但是从R:system()和system2()有两次调用系统。我很好奇这些差异是什么,如果有的话,更重要的是如何使用它们。我找到了一些页面,包括here和here,但我想在这里提供一些示例,以及使用system2()遇到的错误,包括:
sh:1:ls / home:not found
答案 0 :(得分:3)
在研究之前,我的第一次尝试都在system()
完成,因为我不知道system2()
。我决定在system2()
中重做我的方法以实现可移植性(我正在Linux系统上工作)。这让我发现了一些差异。
首先,列出文件的system()
解决方案并将输出保存在变量中:
gseaDirectory<-"/home"
filenames<-system(paste("ls", gseaDirectory, sep=" "), intern=T)
这将一个字符串“/ home”存储到变量gseaDirectory中,这是我的主目录所在的位置。然后,我能够将命令ls
,空格sep=" "
和我的目录变量gseaDirectory
粘贴到linux命令中,以列出所选目录中的所有文件:
ls /home
然后使用添加的system()参数intern=T
将文件列表保存在变量“filenames”中。
这在system2()中不起作用,只返回错误:
sh:1:ls / home:not found
我们的相同方法稍有改动,等效system2()
命令为:
gseaDirectory<-"/home"
filenames<-system2('ls', paste(gseaDirectory, sep=" "), stdout = TRUE)
system2中的第一项是命令,然后是目标文件,后跟stdout=T
告诉R我们要将输出存储到变量中,否则我们的命令结果将被打印而不是保存。
希望这有助于某人!