在 R 中,我想列出目录中的文件,并捕获输出,但是 R 有两个对系统的调用:system() 和 system2()。我很好奇有什么区别,如果有的话,更重要的是如何使用它们。我找到了一些页面,包括 here 和 here ,但我想在这里放一些例子,以及我在使用 system2() 时遇到的错误,包括:
最佳答案
在研究之前,我的第一次尝试都是在 system()
中完成的,因为我不知道 system2()
。为了可移植性,我决定在 system2()
中重做我的方法(我在 Linux 系统上工作)。这让我发现了一些差异。
首先,system()
解决方案列出文件并将输出保存在变量中:
gseaDirectory<-"/home"
filenames<-system(paste("ls", gseaDirectory, sep=" "), intern=T)
这将我的主目录所在的字符串“/home”存储到变量 gseaDirectory 中。然后我能够将命令
ls
、一个空格、 sep=" "
和我的目录变量 gseaDirectory
粘贴到一个 linux 命令中,以列出所选目录中的所有文件:ls /home
然后将文件列表保存在变量 "filenames"中,并添加了 system() 参数
intern=T
。这在 system2() 中不起作用,只会返回错误:
我们相同的方法略有变化,等效的
system2()
命令是:gseaDirectory<-"/home"
filenames<-system2('ls', paste(gseaDirectory, sep=" "), stdout = TRUE)
system2 中的第一项是命令,然后是目标文件,然后是
stdout=T
,它告诉 R 我们要将输出存储到变量中,否则我们的命令的结果将被打印而不是保存。希望这可以帮助某人!
关于r - R 中 system() 和 system2() 的区别?在变量中捕获文件名,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48605776/