Re: [R] getting the name of an object
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@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. __ R-help@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.
Re: [R] getting the name of an object
On Wed, Oct 22, 2008 at 9:34 AM, Duncan Murdoch [EMAIL PROTECTED] wrote: 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. This would be equally hard to do in Java - it is very very unusual to create variables on the fly, and you would have to do some sophisticated reflection stuff. If you're used to using java, maybe you should think about how you would accomplish this task there - surely you'd would iterate along an ArrayList, saving the results back into another ArrayList ? Hadley -- http://had.co.nz/ __ R-help@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.
Re: [R] getting the name of an object
hadley wickham wrote: On Wed, Oct 22, 2008 at 9:34 AM, Duncan Murdoch [EMAIL PROTECTED] wrote: 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. This would be equally hard to do in Java - it is very very unusual to create variables on the fly, and you would have to do some sophisticated reflection stuff. If you're used to using java, maybe you should think about how you would accomplish this task there - surely you'd would iterate along an ArrayList, saving the results back into another ArrayList ? I don't really see the point of doing this at all, but if need be, how about l - lapply(mylist,mean) mapply(assign, paste(foo,names(l),sep=.), l, MoreArgs=list(env=.GlobalEnv)) -- O__ Peter Dalgaard Øster Farimagsgade 5, Entr.B c/ /'_ --- Dept. of Biostatistics PO Box 2099, 1014 Cph. K (*) \(*) -- University of Copenhagen Denmark Ph: (+45) 35327918 ~~ - ([EMAIL PROTECTED]) FAX: (+45) 35327907 __ R-help@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.