Kay
Kay

Reputation: 2854

Returning multiple objects from function that were assigned inside function

I'd like to return all objects that were assigned inside a function,

like so:

foo <- function() { 
  as <- LETTERS[1:3]
  for(a in as) assign(a, sample(1000, 1))
  return(as) # obviously not working
  }

I know I maybe should wrap it in a list but can't get it to work...

Upvotes: 1

Views: 78

Answers (1)

Simon O&#39;Hanlon
Simon O&#39;Hanlon

Reputation: 59970

I'd return it as a list as you suggest, and setNames is kinda designed for this...

foo <- function( n ) { 
  as <- LETTERS[1:n]
  setNames( replicate( n , sample( 1000 , 1 ) , simplify = FALSE  ), as )
  }

foo(3)
#$A
#[1] 286

#$B
#[1] 54

#$C
#[1] 791

Upvotes: 2

Related Questions