Spúšťam skript R pomocou skriptu bash a chcem vrátiť výstup skriptu R do skriptu bash, aby som s ním tam pracoval.
Bash je takto:
#!/bin/bash
Rscript MYRScript.R
a=OUTPUT_FROM_MYRScript.R
do sth with a
a R skript je takto:
for(i in 1:5){
i
sink(type="message")
}
Chcem bash pracovať s jednou premennou od R v tej dobe, čo znamená: bash dostane i = 1 a pracuje s tým, keď je táto úloha vykonaná, dostane i = 2 a tak ďalej.
Akékoľvek nápady, ako to urobiť?
odpovede:
3 pre odpoveď č. 1Jednou z možností je, aby sa váš skript R spustil #!/usr/bin/env Rscript
(nastavenie spustiteľného bitu, napr. chmod 0755 myrscript.r
, chmod +x myrscript.r
, atď.) a jednoducho ju zaobchádzať ako s akýmkoľvek iným príkazom, napr. priradenie výsledkov do premennej poľa nižšie:
myrscript.r
#!/usr/bin/env Rscript
cat(1:5, sep = "n")
mybashscript.sh
#!/bin/bash
RES=($(./myrscript.r))
for elem in "${RES[@]}"
do
echo elem is "${elem}"
done
nrussell$ ./mybashscript.sh
elem is 1
elem is 2
elem is 3
elem is 4
elem is 5
0 pre odpoveď č. 2
Tu je MYRScript.R:
for(iter in 1:5) {
cat(iter, " ")
}
a tu je vaša bash
scenár:
#!/bin/bash
r_output=`Rscript ~/MYRscript.R`
for iter in `echo $r_output`
do
echo Here is some output from R: $iter
done
Here is some output from R: 1
Here is some output from R: 2
Here is some output from R: 3
Here is some output from R: 4
Here is some output from R: 5