[R] Naming elements of a list
Richard.Cotton at hsl.gov.uk
Richard.Cotton at hsl.gov.uk
Thu Nov 22 12:33:16 CET 2007
Thomas,
> I have a numeric vector of lenth 1. I am trying to use it inside
> a function just by giving its name, rather than specifying it as
> an argument to the function. I am aware that there is an attach
> function which you need to call. The attach function will accept a
> list. However, I don't seem to be able to create the list properly. (Or
> should I use a frame instead?)
>
> free_driver <- function (){
> i <- numeric (1)
> attach (as.list (i))
> i <- 25
>
> free_test ()
>
> }
> free_test <- function (){
> print ("i =")
> print (i)
> return ()
>
> }
Your code can be written more simply as:
free_test <- function (){cat("i =\n", i, "\n")}
free_driver <- function(){i=25;free_test()}
free_driver()
The scoping rules of R mean that the function free_test can see all the
variables declared in free_driver. Your code _may_ be more robust if you
pass the variable to the function where it is used though. At the moment,
if you called free_test from somewhere other than free_driver (where i has
not been declared) you will get an error.
> Is there an easy way to name all elements of a list?
Yes. Try:
mylist <- list(a=1:5, b=letters[1:4])
mylist["a"]
mylist$b
attach(mylist)
a
b
detach(mylist)
See the help page for list for more examples.
Regards,
Richie.
Mathematical Sciences Unit
HSL
------------------------------------------------------------------------
ATTENTION:
This message contains privileged and confidential inform...{{dropped:20}}
More information about the R-help
mailing list