通过命令行将输入文件传递给R脚本

时间:2015-02-16 14:20:52

标签: r command-line-arguments

我有3个data.frames(tab1,tab2),我需要一个R脚本将它们与cbind结合起来,并将输出保存到另一个表中。

所以我这样做:

tab1=read.table("imput_tab1.txt",header=TRUE,fill=TRUE,stringsAsFactor=FALSE)
tab2=read.table("imput_tab2.txt",header=TRUE,fill=TRUE,stringsAsFactor=FALSE)
myfunction <- function(tab1, tab2 )
{
tab3=cbind(tab1,tab2)
}
write.table(tab3, file="output_table.txt",sep="\t", row.names = FALSE, col.names=T, qmethod = "double", quote=F) 

我想在命令行上执行所有这些操作。 像

这样的东西
R Myscript.r imput_tab1.txt imput_tab2.txt > output_table.txt

可能吗?

1 个答案:

答案 0 :(得分:1)

您的脚本应该是:

#the variable args below captures the arguments you pass from the 
#command line i.e. the names of the two files and stores them in a vector
args <- commandArgs(trailingOnly = TRUE)

tab1=read.table(args[1],header=TRUE,fill=TRUE,stringsAsFactor=FALSE)
tab2=read.table(args[2],header=TRUE,fill=TRUE,stringsAsFactor=FALSE)

#you never used your function in your code so just do the below
tab3=cbind(tab1,tab2) #you don't necessarily need a function to cbind two tables

write.table(tab3, file="output_table.txt",sep="\t", row.names = FALSE, col.names=T, qmethod = "double", quote=F) 

我们假设您上面的脚本名为test.R

您应该从命令行运行它:

Rscript test.R imput_tab1.txt imput_tab2.txt

它会起作用(假设文件位于正确的位置)。