On 10/22/2008 10:02 AM, francois Guilhaumon wrote:> Hello,
>
> I'm looking for a way to get the "name" of an object when it
is used
> within an "sapply".
>
> More precisely, with a simple example :
>
> I have a named list of objects :
>
> myList = list(a=rnorm(10),b=rnorm(10),c=rnorm(10))
>
> I would like to create a new object from each of the components of
> myList using the "sapply" function, for example to get the mean
of all
> components of myList :
>
> createVarMean = function(obj){
>
> obj.name = ******
> obj.mean = mean(obj)
> assign(obj.name,obj.mean)
>
> }#end of createVarMean
sapply doesn't pass the names in, but there are other choices:
sapply(seq_along(myList), function(i) list(obj.name=names(myList)[i],
obj.mean = mean(myList[[i]])))
which iterates over the indices of myList, rather than over the elements
of it. But a simple sapply(myList, function(obj) mean(obj)) is probably
preferable, since it attaches the names in a nice way:
> sapply(myList, function(obj) mean(obj))
a b c
-0.4097454 -0.5057526 -0.2204035
> Using :
>
> sapply(myList,createVarMean)
>
> Should then create all the objects.
>
> Any idea to get the names ? Perhaps using object oriented programming
> (is there an equivalent of the "this" syntax of Java in R ?) ?
Object oriented stuff in R is quite different from Java, because R
doesn't have pointers or references except in very special cases.
Duncan Murdoch
>
> I don't want to use a loop here.
>
> thank you for your time and trouble,
>
> Fran?ois.
>
> ______________________________________________
> 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.