研究前,我第一次尝试在所有完成的system(),因为我不知道system2()。system2()为了可移植性,我决定重做我的方法(我在 Linux 系统上工作)。这让我发现了一些差异。
首先,system()列出文件并将输出保存在变量中的解决方案:
gseaDirectory<-"/home"
filenames<-system(paste("ls", gseaDirectory, sep=" "), intern=T)
Run Code Online (Sandbox Code Playgroud)
这将我的主目录所在的字符串“/home”存储到变量 gseaDirectory 中。然后,我能够将命令ls、空格、sep=" "和我的目录变量粘贴gseaDirectory到 linux 命令中,以列出所选目录中的所有文件:
ls /home
Run Code Online (Sandbox Code Playgroud)
然后将文件列表保存在变量“filenames”中,并添加了 system() 参数intern=T。
这在 system2() 中不起作用,只会返回错误:
sh: 1: ls /home : 未找到
我们相同的方法略有变化,等效的system2()命令是:
gseaDirectory<-"/home"
filenames<-system2('ls', paste(gseaDirectory, sep=" "), stdout = TRUE)
Run Code Online (Sandbox Code Playgroud)
system2 中的第一项是命令,然后是目标文件,然后是stdout=T它告诉 R 我们要将输出存储到一个变量中,否则我们的命令的结果将被打印而不是保存。
希望这可以帮助某人!