[R] non-interactive subset, `$`, and quotes
Benjamin Tyner
btyner at gmail.com
Fri Jun 27 04:35:44 CEST 2014
Duncan,
How embarrassing! Thanks.
-Ben
On 06/26/2014 10:25 PM, Duncan Murdoch wrote:
> On 27/06/2014, 4:08 AM, Benjamin Tyner wrote:
>> Hi
>>
>> I know that subset() is not intended for use in programming. However I
>> am still curious to learn why, in non-interactive mode, if I take away
>> the quotes around 'bar'
>>
>> Rscript -e "foo <- list(bar = iris); head(subset(foo$'bar',
>> Species=='setosa'))"
>> Sepal.Length Sepal.Width Petal.Length Petal.Width Species
>> 1 5.1 3.5 1.4 0.2 setosa
>> 2 4.9 3.0 1.4 0.2 setosa
>> 3 4.7 3.2 1.3 0.2 setosa
>> 4 4.6 3.1 1.5 0.2 setosa
>> 5 5.0 3.6 1.4 0.2 setosa
>> 6 5.4 3.9 1.7 0.4 setosa
>>
>> then it results in an error:
>>
>> Rscript -e "foo <- list(bar = iris); head(subset(foo$bar,
>> Species=='setosa'))"
>> Error in subset.default(foo, Species == "setosa") :
>> object 'Species' not found
>> Calls: head -> subset -> subset.default
>> Execution halted
>>
>> and also why this does not occur in interactive mode? My sessionInfo() is
>>
>> R Under development (unstable) (2014-06-26 r66043)
>> Platform: x86_64-unknown-linux-gnu (64-bit)
>>
>> locale:
>> [1] LC_CTYPE=en_US.UTF-8 LC_NUMERIC=C
>> [3] LC_TIME=en_US.UTF-8 LC_COLLATE=en_US.UTF-8
>> [5] LC_MONETARY=en_US.UTF-8 LC_MESSAGES=en_US.UTF-8
>> [7] LC_PAPER=en_US.UTF-8 LC_NAME=C
>> [9] LC_ADDRESS=C LC_TELEPHONE=C
>> [11] LC_MEASUREMENT=en_US.UTF-8 LC_IDENTIFICATION=C
>>
>> attached base packages:
>> [1] stats graphics grDevices utils datasets methods base
>>
> Try replacing "Rscript -e" with "echo" to see what your shell is really
> sending as a command to execute. I suspect it is treating $bar as a
> shell variable (see the error message, it has disappeared).
>
--
<i> </i>
More information about the R-help
mailing list