There is a crude implementation of
stacks in 'S Poetry' (available on
www.burns-stat.com). I haven't looked
at it, but I'd guess that code would
work in R as well.
On 04/01/2012 21:22, Tom Roche wrote:
summary: Specifically, how does one do stack/FIFO operations in R?
Generally, how does one code functions with side effects in R?
details:
I have been a coder for years, mostly using C-like semantics (e.g.,
Java). I am now trying to become a scientist, and to use R, but I don't
yet have the sense of "good R" and R idiom (i.e., expressions that are
to R what (e.g.) the Schwartzian transform is to Perl).
I have a data-assimilation problem for which I see a solution that
wants a stack--or, really, just a pop(...) such that
* s<- c(1:5)
* print(s)
[1] 1 2 3 4 5
* pop(s)
[1] 1
* print(s)
[1] 2 3 4 5
but in fact I get
pop(s)
Error: could not find function "pop"
and Rseek'ing finds me nothing. When I try to write pop(...) I get
pop1<- function(vector_arg) {
+ length(vector_arg) -> lv
+ vector_arg[1] -> ret
+ vector_arg<<- vector_arg[2:lv]
+ ret
+ }
pop1(s)
[1] 1
print(s)
[1] 1 2 3 4 5
i.e., no side effect on the argument
pop2<- function(vector_arg) {
+ length(vector_arg) -> lv
+ vector_arg[1] -> ret
+ assign("vector_arg", vector_arg[2:lv])
+ return(ret)
+ }
pop2(s)
[1] 1
print(s)
[1] 1 2 3 4 5
ditto :-( What am I missing?
* Is there already a stack API for R (which I would expect)? If so, where?
* How to cause the desired side effect to the argument in the code above?
TIA, Tom Roche<tom_ro...@pobox.com>
______________________________________________
R-help@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.
--
Patrick Burns
pbu...@pburns.seanet.com
twitter: @portfolioprobe
http://www.portfolioprobe.com/blog
http://www.burns-stat.com
(home of 'Some hints for the R beginner'
and 'The R Inferno')
______________________________________________
R-help@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.