TRUE veya FALSE çıkaran bir R komut dosyası var. R olarak, iyi niyetli bir T/F veri türünü kullanarak, ama ben vurmayı dönüş değerini yankı zaman, diyerek bir dize gibi görünüyor:Bir Rscript'den bir Bash değişkenine bir boolean çıktısı
"[1] TRUE"
veya
"[1] FALSE"
Her ikisi de önce [1]. Hiçbiri [0], bu bir yazım hatası değil. Her neyse, bunun sonucu, bu Rscript'in çıktısını takip eden bir betiği çalıştırmak için test etmeye çalıştığım zaman, "TRUE" ya da "TRUE" ile karşılaştırmak yerine "[1] TRUE" ile dize karşılaştırması yapmak zorunda kaldım. 1 "daha temiz ve daha iyi hisseder.
A=$(Rscript ~/MyR.r)
echo $A
if [ "$A" == "[1] TRUE" ]; then
bash SecondScript.sh
fi
nasıl R ya çıkış gerçek bir Boole veya Bash çıktı dizesini kabul etmek ve karşılaştırma için 0/1 dönüştürmek yapabilir? İşler bu hangi nasıl, için ...
if [ $A == TRUE ];
if [ "$A" == "[1] TRUE" ];
daha olması mümkün mü, yoksa bu mutlu olmalı doğrusu sınamak istiyorum, nedir?
* GÜNCELLEME *
İşte bu üretir Rscript ait minimalized versiyonu ...
myinput <- TRUE #or FALSE
FunctionName <- function(test){
if (test == TRUE){
val <- TRUE
} else {
val <- FALSE
}
return(val)
}
FunctionName(myinput)
Bilginize, [1] anlatıyor:
Şimdi sizin gibi kullanabilirsiniz Bu bir vektörün ilk elemanıdır. Birden fazla elemanı olan bir çıktıyı, çıktıların bir satırdan fazla uzayacağı şekilde yazdırırsanız, R, yazdıracağınız [11], [21], [31] vb. satır başına değerler. Bir matris yazdırırsanız, satırları ve sütunları sizin için [, 1] ve [1,] olarak etiketler. – Spacedman
Aşağıda verilen iyi çözümlere ek olarak, Rscript'den kabuk değerine hangi değerin döndüğünü söylemek için Rscript dosyasındaki q (status = val) değerini kullanabileceğinizi düşünüyorum. Bu konuda dikkatli olun, ancak ortak çalışanlarla çalışıyorsanız, dönüş değeri genellikle hata mesajlarını kodlamak için kullanılır; böylece, değirmen cevabının yalnızca bir koşulu yerine, endişelenmeye değer bir şey olarak sıfır olmayan bir dönüş değeri alabilirler. – mweylandt