[R] list assignment syntax?

ivo welch ivo.welch at gmail.com
Sat Mar 31 03:26:29 CEST 2012


thanks, everyone.  I should have been clearer (as always).  I used the
numbers as an example only.  I am aware that I can put numbers into
vectors and get nice R syntax.  my problem is that I usually want to
return multiple and/or mixed objects, such as multiple data frames.  I
should have given as an example something like

   f <- function(a,b) list( data.frame(a+rnorm(20), b), loess( a ~ b) )

weidong---yes, nice syntax, but I don't want to invoke f() twice.

peter---I don't think your unlist syntax works.  I tried it.

gabor---#1-#3 work, but aren't what I really want.  #4 is exactly what
I wanted.  can list[] be added into the standard core R as a feature?
it would seem like a natural part of the syntax for functions
returning multiple values.

justin---mea culpa.

regards,

/iaw
----
Ivo Welch (ivo.welch at gmail.com)



On Fri, Mar 30, 2012 at 5:08 PM, Justin Haynes <jtor14 at gmail.com> wrote:
> You can also take a look at
>
> http://stackoverflow.com/questions/7519790/assign-multiple-new-variables-in-a-single-line-in-r
>
> which has some additional solutions.
>
>
>
> On Fri, Mar 30, 2012 at 4:49 PM, Peter Ehlers <ehlers at ucalgary.ca> wrote:
>> On 2012-03-30 15:40, ivo welch wrote:
>>>
>>> Dear R wizards:  is there a clean way to assign to elements in a list?
>>>  what I would like to do, in pseudo R+perl notation is
>>>
>>>  f<- function(a,b) list(a+b,a-b)
>>>  (c,d)<- f(1,2)
>>>
>>> and have c be assigned 1+2 and d be assigned 1-2.  right now, I use the
>>> clunky
>>>
>>>   x<- f(1,2
>>>   c<- x[[1]]
>>>   d<- x[[2]]
>>>   rm(x)
>>>
>>> which seems awful.  is there a nicer syntax?
>>>
>>> regards, /iaw
>>> ----
>>> Ivo Welch (ivo.welch at brown.edu, ivo.welch at gmail.com)
>>>
>>
>> I must be missing something. Why not just assign to a
>> vector instead of a list?
>>
>>  f<- function(a,b) c(a+b,a-b)
>>
>> If it's imperative that f return a list, then you
>> could use
>>
>>  (c, d) <- unlist(f(a, b))
>>
>> to get vector (c, d).
>>
>> Peter Ehlers
>>
>>
>> ______________________________________________
>> 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.



More information about the R-help mailing list