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
Reasonably Related 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 ?