在R中,我想列出目录中的文件,并捕获输出,但是R对系统进行了两次调用:system()和system2()。我很好奇有什么区别,如果有的话,更重要的是如何使用它们。我找到了一些页面,包括这里和这里,但我想在这里放一些例子,以及我在使用 system2() 时遇到的错误,包括:
SH: 1: LS/首页 : 未找到
在研究之前,我的第一次尝试都是在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
。
这在 system2() 中不起作用,只返回错误:
SH: 1: LS/首页 : 未找到
我们相同的方法略有改变,等效system2()
命令是:
gseaDirectory<-"/home"
filenames<-system2('ls', paste(gseaDirectory, sep=" "), stdout = TRUE)
system2 中的第一项是命令,然后是目标文件,后跟stdout=T
告诉 R 我们将输出存储到变量中,否则命令的结果将被打印而不是保存。
希望这对某人有所帮助!