[R] Looping through R objects with $ operator and tags
baptiste auguie
baptiste.auguie at googlemail.com
Thu Jul 30 18:40:01 CEST 2009
essentially the same,
object1 = object2 = object3 = data.frame(Distance = 1:10)
foo = function(o){
within(get(o), LogDist <- log10(Distance))
}
my.objects = paste("object", 1:3,sep="")
lapply(my.objects, foo)
It is however advisable to group the initial objects in a list, or in
a long format data.frame.
HTH,
baptiste
2009/7/30 jim holtman <jholtman at gmail.com>:
> I would first put the objects in a 'list' since it is easier to work
> with and then use 'lapply':
>
>> obj1 <- obj2 <- obj3 <- data.frame(Distance=1:10)
>> # create a list - earier to work with
>> list.obj <- list(obj1, obj2, obj3)
>>
>> list.obj <- lapply(list.obj, function(x){
> + x$LogDist <- log(x$Distance)
> + x # return the modified value
> + })
>>
>> list.obj
> [[1]]
> Distance LogDist
> 1 1 0.0000000
> 2 2 0.6931472
> 3 3 1.0986123
> 4 4 1.3862944
> 5 5 1.6094379
> 6 6 1.7917595
> 7 7 1.9459101
> 8 8 2.0794415
> 9 9 2.1972246
> 10 10 2.3025851
>
> [[2]]
> Distance LogDist
> 1 1 0.0000000
> 2 2 0.6931472
> 3 3 1.0986123
> 4 4 1.3862944
> 5 5 1.6094379
> 6 6 1.7917595
> 7 7 1.9459101
> 8 8 2.0794415
> 9 9 2.1972246
> 10 10 2.3025851
>
> [[3]]
> Distance LogDist
> 1 1 0.0000000
> 2 2 0.6931472
> 3 3 1.0986123
> 4 4 1.3862944
> 5 5 1.6094379
> 6 6 1.7917595
> 7 7 1.9459101
> 8 8 2.0794415
> 9 9 2.1972246
> 10 10 2.3025851
>
>
>
> On Thu, Jul 30, 2009 at 12:04 PM, Vivek Ayer<vivek.ayer at gmail.com> wrote:
>> Hi all,
>>
>> Suppose I want to set the values in a column to the log of the values
>> of another column like so:
>>
>> object$LogDist <- log10(object$Distance)
>>
>> How do I loop through the objects if I have object1, object2, etc to
>> perform this function?
>>
>> object1$LogDist <- log10(object1$Distance)
>> object2$LogDist <- log10(object2$Distance)
>> object3$LogDist <- log10(object3$Distance)
>>
>> I was trying to use the assign and paste functions like so:
>>
>> for (i in c(1:10))
>> assign(paste("object",i,"$LogDist"),log10(as.name(paste("object",i,"$LogDist")))
>>
>> but that didn't work out. It creates objects with whole name
>> object1$LogDist instead of just manipulating the column that's part of
>> that object.
>>
>> Help appreciated,
>> Vivek
>>
>> ______________________________________________
>> 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.
>>
>
>
>
> --
> Jim Holtman
> Cincinnati, OH
> +1 513 646 9390
>
> What is the problem that you are trying to solve?
>
> ______________________________________________
> 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.
>
--
_____________________________
Baptiste Auguié
School of Physics
University of Exeter
Stocker Road,
Exeter, Devon,
EX4 4QL, UK
http://newton.ex.ac.uk/research/emag
More information about the R-help
mailing list