I'd like to pass a list object created by one function as an argument of
another function. once inside the second function, I'd like to break the
list up to it's individual elements, each then identifiable by the
'names'
of the list.
The list looks something like
lst<-list(a=1, b=2, df=5, g=7)
then inside the function I've been writing a sequence of statements that
extract the objects within lst like
do_something<-function(L){
a<-lst$a
b<-lst$b
df<-lst$df
g<-lst$g
a+b+df+g
}
do_something(lst)
My question is, is it possible to avoid the above sequence of statements,
and achieve the same thing with a single line of code? Perhaps this would
be bad programming practise, as you can't 'see' where objects in the
function are coming from?
Thanks,
alastair
--
View this message in context:
http://r.789695.n4.nabble.com/Passing-lists-between-functions-tp4650792.html
Sent from the R help mailing list archive at Nabble.com.
Hi,
If the end result you want is the sum of those elements, will this work for you?
?sum(unlist(lst))
#[1] 15
#or
sum(do.call(c,lst)) #in this case
#[1] 15
A.K.
----- Original Message -----
From: Ally <a.rushworth at stats.gla.ac.uk>
To: r-help at r-project.org
Cc:
Sent: Sunday, November 25, 2012 8:24 PM
Subject: [R] Passing lists between functions
I'd like to pass a list object created by one function as an argument of
another function.? once inside the second function, I'd like to break the
list up to it's individual elements, each then identifiable by the
'names'
of the list.?
The list looks something like
lst<-list(a=1, b=2, df=5, g=7)
then inside the function I've been writing a sequence of statements that
extract the objects within lst like
do_something<-function(L){
a<-lst$a
b<-lst$b
df<-lst$df
g<-lst$g
a+b+df+g
}
do_something(lst)
My question is, is it possible to avoid the above sequence of statements,
and achieve the same thing with a single line of code?? Perhaps this would
be bad programming practise, as you can't 'see' where objects in the
function are coming from?
Thanks,
alastair
--
View this message in context:
http://r.789695.n4.nabble.com/Passing-lists-between-functions-tp4650792.html
Sent from the R help mailing list archive at Nabble.com.
______________________________________________
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.
Just reference the objects in the list:
do_something<-function(L){
lst$a+lst$b+lst$df+lst$g
}
do_something(lst)
On Sun, Nov 25, 2012 at 8:24 PM, Ally <a.rushworth at stats.gla.ac.uk>
wrote:> I'd like to pass a list object created by one function as an argument
of
> another function. once inside the second function, I'd like to break
the
> list up to it's individual elements, each then identifiable by the
'names'
> of the list.
>
> The list looks something like
>
> lst<-list(a=1, b=2, df=5, g=7)
>
> then inside the function I've been writing a sequence of statements
that
> extract the objects within lst like
>
> do_something<-function(L){
> a<-lst$a
> b<-lst$b
> df<-lst$df
> g<-lst$g
> a+b+df+g
> }
> do_something(lst)
>
> My question is, is it possible to avoid the above sequence of statements,
> and achieve the same thing with a single line of code? Perhaps this would
> be bad programming practise, as you can't 'see' where objects
in the
> function are coming from?
>
> Thanks,
>
> alastair
>
>
>
>
>
>
>
> --
> View this message in context:
http://r.789695.n4.nabble.com/Passing-lists-between-functions-tp4650792.html
> Sent from the R help mailing list archive at Nabble.com.
>
> ______________________________________________
> 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.
--
Jim Holtman
Data Munger Guru
What is the problem that you are trying to solve?
Tell me what you want to do, not how you want to do it.
On 26/11/12 14:24, Ally wrote:> I'd like to pass a list object created by one function as an argument of > another function. once inside the second function, I'd like to break the > list up to it's individual elements, each then identifiable by the 'names' > of the list. > > The list looks something like > > lst<-list(a=1, b=2, df=5, g=7) > > then inside the function I've been writing a sequence of statements that > extract the objects within lst like > > do_something<-function(L){ > a<-lst$a > b<-lst$b > df<-lst$df > g<-lst$g > a+b+df+g > }Did you mean to write "L" in the foregoing where you have written "lst"?> do_something(lst) > > My question is, is it possible to avoid the above sequence of statements, > and achieve the same thing with a single line of code? Perhaps this would > be bad programming practise, as you can't 'see' where objects in the > function are coming from?Perhaps: do_something <- function(L){ with(L,a+b+df+g) } cheers, Rolf Turner
Possibly Parallel Threads
- Identify points that lie within polygon
- Row-wise kronecker product with Matrix package
- Passing Arguments to before_filter
- [LLVMdev] why LoopUnswitch pass does not constant fold conditional branch and merge blocks
- newbie graphics question: Two density plots in same frame ?