TRUEまたはFALSEを出力するRスクリプトがあります。 Rでは、それは正真正銘のT/Fのデータ型を使用していますが、私はbashのにその戻り値をエコーするとき、文字列のようだ、と言って:RscriptからBash変数にブール値を出力します
"[1] TRUE"
または
"[1] FALSE"
これらの両方に[1]が付いています。どちらも[0]ではありません。それはタイプミスではありません。とにかく、このRscriptの出力をテストして後続のスクリプトを実行しようとすると、「TRUE」または「TRUE」と比較する代わりに、以下のように「[1] TRUE」との文字列比較を行う必要があります。 1 "が、よりクリーンでより良い感じです。
A=$(Rscript ~/MyR.r)
echo $A
if [ "$A" == "[1] TRUE" ]; then
bash SecondScript.sh
fi
どのように私はRのいずれかの出力真ブール、またはバッシュ出力文字列を受け入れ、比較のために0/1に変換することができますか?つまり、私はむしろ可能ということですか、私はそれが働く、どのように、これに満足する必要があります
if [ "$A" == "[1] TRUE" ];
より
if [ $A == TRUE ];
...をテストしたいですか?
* UPDATE *
ここでは、これを生成しRscriptのminimalizedバージョンだ...
myinput <- TRUE #or FALSE
FunctionName <- function(test){
if (test == TRUE){
val <- TRUE
} else {
val <- FALSE
}
return(val)
}
FunctionName(myinput)
、[1]語っていますこれはベクトルの最初の要素です。複数の要素を持つベクトルを印刷して複数の行にまたがる場合、Rは[11]、[21]、[31]などを印刷するので、印刷された10行ごとの値。行列を印刷すると、行と列に[、1]と[1、]というラベルが付けられます。 – Spacedman
下記の良い解決策に加えて、Rscriptのq(status = val)を使用して、Rscriptからどの値がシェルに返されるかを言うことができると思います。ただし、共同作業者と作業している場合は注意してください。返り値は、エラーメッセージをエンコードするためによく使用されるため、ミルの返答だけでなく、心配する価値のある値としてゼロ以外の戻り値を取ることがあります。 – mweylandt