2016-08-11 11 views
0

私は以下のRScriptを使用しています。ファイル(ファイル、 "rt")のエラーR引数

/usr/local/bin/R CMD BATCH --slave '--args 51102' coverage_db/src/main/scripts/R_ExonsPlots.R 

Rスクリプト

args<-commandArgs(TRUE) 
gname = as.numeric(args[1]) 
sample_data = read.table(Sys.glob("/NGS_STORE/ARCHIVE2/Cov_InputBed_Repository/*gname*"),sep="\t",header=FALSE,stringsAsFactors=FALSE) 
colnames(sample_data)=c("chr","start","end","gene","avg_depth") 

エラー

Error in file(file, "rt") : invalid 'description' argument 

それは "引数" なしでうまくいきましたが、エラーがから

+0

「貼り付け」について知りたいだけですか? – Dason

+0

「貼り付け」が何であるか分かりません。私はRプログラミングの初心者です。テーブルを読み込むための "args"に基づいてファイルをGlobにしたい。 – Kiran

+0

'gname'の値を表示しようとしています。私はあなたがこのエラーを呼び出す 'gname'に複数の値を取得しているに違いないと思います。なぜあなたが '--args 51102'を渡す必要があるのか​​というもう一つの疑問は、51102はしません。あなたはとにかく以下のas.numericをやっています。 – abhiieor

答えて

0

エラーの結果であるものを手に入れることができませんでしたが、次のようにread.tableによって複数のファイル名が返されるため。この場合、Sys.globは、ワイルドカードと一致する各ファイル名に対して1つの文字のベクトルを返します。おそらく、この問題は、"/NGS_STORE/ARCHIVE2/Cov_InputBed_Repository/*gname*"が単なる文字列(文字)であるため、gnameの値が実際には使用されないという別の問題によって引き起こされます。両方を修正するには:

args<-commandArgs(TRUE) 
gname = as.numeric(args[1]) 
files = Sys.glob(paste0("/NGS_STORE/ARCHIVE2/Cov_InputBed_Repository/*",gname,"*")) 
if (!is.na(files[1])) { 
    sample_data = data.frame() 
    for (afile in files) { 
     sample_data = rbind(sample_data, read.table(afile, sep="\t", header=FALSE, 
                stringsAsFactors=FALSE)) 
    } 
    colnames(sample_data)=c("chr","start","end","gene","avg_depth") 
} 

をここで、私はグロブを満たす複数のファイルがある場合、あなたは行(すなわち、彼らは同じ数の列を持っている)ことにより、それらを結合することを想定しています。明らかに、それらを列で結合し、最初のもの以外のすべてを無視することができます。

globに一致するものがなければ、NAを返します。そのため、read.tableを呼び出す前にNAを確認する必要があります。そうでなければ、read.tableエラーError in file(file, "rt") : cannot open the connectionが表示されます。

関連する問題