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.

Reply via email to