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}}
______________________________________________
[email protected] 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.