[R] Declare BASH Array Using R System Function

peter dalgaard pdalgd at gmail.com
Mon Jul 29 09:49:28 CEST 2013


On Jul 29, 2013, at 08:27 , Jeff Newmiller wrote:

> You seem confused.

Not particularly, but he needs to be aware of _which_ shell R is executing in system() calls. These things work for me:

> system("foo=(bar baz); echo ${foo[1]}")
baz

Dario's issue is suggested by his error message

>>> system("names=(X Y)")
>> sh: Syntax error: "(" unexpected

The shell is (Bourne) "sh", not "bash", so bash extension won't work. 

This is highly system dependent: On OSX Snow Leopard, e.g., /bin/sh really is GNU bash, which is why it works for me. Others have the more sane setup where /bin/sh really is Bourne sh.

Next question is of course how to ensure that bash gets used. I must admit that I have long forgotten...

-Peter D.


> You are programming in R, and asking questions about bash on an R mailing list. You seem to need to learn the difference between environment variables and bash variables and how processes acquire and transfer environment variables, which is really an operating system concept and off topic here. Once you do understand this difference, you might be interested in reading the R help file on Sys.setenv().
> ---------------------------------------------------------------------------
> Jeff Newmiller                        The     .....       .....  Go Live...
> DCN:<jdnewmil at dcn.davis.ca.us>        Basics: ##.#.       ##.#.  Live Go...
>                                      Live:   OO#.. Dead: OO#..  Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> /Software/Embedded Controllers)               .OO#.       .OO#.  rocks...1k
> --------------------------------------------------------------------------- 
> Sent from my phone. Please excuse my brevity.
> 
> Dario Strbenac <dstr7320 at uni.sydney.edu.au> wrote:
>> Hello,
>> 
>> It is difficult searching for previous posts about this since the
>> keywords are short and ambiguous, so I hope this is not a duplicate
>> question.
>> 
>> I can easily declare an array on the command line.
>> 
>> $ names=(X Y)
>> $ echo ${names[0]}
>> X
>> 
>> I am unable to do the same from within R.
>> 
>>> system("names=(X Y)")
>> sh: Syntax error: "(" unexpected
>> 
>> Reading the documentation for the system function, it appears to only
>> be relevant for executing commands. What can I do instead to declare a
>> BASH array ? Thanks.
>> 
>> --------------------------------------
>> Dario Strbenac
>> PhD Student
>> University of Sydney
>> Camperdown NSW 2050
>> Australia
>> 
>> ______________________________________________
>> R-help at r-project.org mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide
>> http://www.R-project.org/posting-guide.html
>> and provide commented, minimal, self-contained, reproducible code.
> 
> ______________________________________________
> R-help at r-project.org mailing list
> https://stat.ethz.ch/mailman/listinfo/r-help
> PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
> and provide commented, minimal, self-contained, reproducible code.

-- 
Peter Dalgaard, Professor,
Center for Statistics, Copenhagen Business School
Solbjerg Plads 3, 2000 Frederiksberg, Denmark
Phone: (+45)38153501
Email: pd.mes at cbs.dk  Priv: PDalgd at gmail.com



More information about the R-help mailing list