/ / R: prejsť premennú z R na unix - r, premenné, unix, odoslať

R: prejsť premennú z R na unix - r, premenné, unix, odoslať

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ď č. 1

Jednou 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