2016-11-07 6 views
0

目的は、フォルダ内にあるすべてのスクリプト(デフォルト)または引数でユーザーが定義したスクリプトを使用することです。ファイルにエラーがあります。

私はデフォルト入力した場合:

RScript.exe Detection.r --detection ALL 

を結果が(問題なし)のようになります。

[1] "script1"    "script2" 
[3] "script3" 

しかし、私は手動で使用するためのスクリプトを定義した場合:

RScript.exe Detection.r --detection algo1,algo2 

結果は次のようになります。

[[1]] 
[1] "algo1" "algo2" 

そして、私はこのエラーを持っている:

Error in file(filename, "r", encoding = encoding) : 
argument 'description' incorrect 

それが動作しない理由を私は知りません。ところで

、この扱いされているコード:

if(opt$detectionMethods =='ALL') { 
    detectionMethods <- list.files(paste(projectBasePath, '/modules/detections', sep='')) 
    detectionMethods <- gsub("\\.r", "", detectionMethods) 
} else { 
    detectionMethods <- strsplit(opt$detectionMethods, ",") 
} 

答えて

0

は、ここでの問題は、strsplit項目の解析されたベクトルが、その解析されたベクターを含むリストを返さないことです。これは、strplitもリストまたはベクトルを入力として扱うことができるためです(例:c('file1,file2,file3', 'file4,file5,file6'))。この場合、その機能は必要ありません。

unlistを使用すると、リスト内のベクターをベクターのみにキャストできます。これにより結果はlist.filesの出力と同じになります。これによりコードが動作するようになります。例:基本的に...直接strplitへのすべての引数に渡しますが、結果を返す前にunclassを呼び出し

simple_strsplit = function(...) { 
    return(unlist(strsplit(...))) 
} 

unlist(strsplit('file1,file2,file3', split = ',')) 
[1] "file1" "file2" "file3" 

はまた、カスタム関数を作成することができます。

+0

「unlist」は私の状況では魅力的なように動作しますが、それは簡単なことではありませんでした。どうもありがとうございます ! – pakzs

+0

Rの多くのものと同様、一度それを知ると簡単です;)。 –

関連する問題