[R] create an object in a loop (v3)

Ivan Calandra ivan.calandra at uni-hamburg.de
Tue Feb 2 17:44:40 CET 2010


Hi David,

Thanks for your answer.
But I don't really see how I can extend it with my real data.
The thing is that I have more than 3 names and 1 value for each name. 
Moreover, each is different from one run to another. That is why I was 
trying with a modification of names(). Also to be noted is that I 
simplified the "name" in assign(); I actually have 2 other variables 
that will be pasted to create the name.

Here is my code (I kept only what is important for that part):
----
library(WRS)
seq.num <- seq(7,10,1)        #column (variable) indexes to be used as 
numerical variables

# fac2list() separates the data from file[,k] into groups from levels in 
file[3] and store into list mode.
for(i in 1:length(seq.num)) {
  k <- seq.num[i]
  name.num <- names(file)[k]
  assign(paste(names(file)[3], name.num, sep="_"), fac2list(file[,k], 
file[3]))
  names(paste(names(file)[3], name.num, sep="_")) <- 
levels(factor(file[[3]]))  #that line doesn't work, but I would like 
something in this direction
}
----

Thanks in advance for your help.
Regards,
Ivan



Le 2/1/2010 18:47, David Winsemius a écrit :
>
> On Feb 1, 2010, at 12:33 PM, Ivan Calandra wrote:
>
>> I have a follow-up question:
>>
>> I use assign() to store some value in my paste()-created object as 
>> suggested:
>> for (i in 1:3) {
>> assign(paste("object", i, sep=""), c("a", "b", "c"))
>> }
>>
>> Then I would like to change the names of the elements of that object 
>> within the loop. Since it is all in a loop, I cannot give the name of 
>> the object manually by doing something like: names(object1) <- 
>> c("tooth", "bone", "species").
>> The only thing I can give to names() is paste("object", i, sep=""), 
>> which doesn't work.
>>
>> Any idea of how to do it?
>
> > for (i in paste("object", 1:3, sep="")) {
> + assign(i, c("tooth"="a", "bone"="b", "species"="c") )
> + }
> > object1
>   tooth    bone species
>     "a"     "b"     "c"
>
>>
>> Thanks in advance
>> Ivan
>>
>>
>> Le 2/1/2010 17:14, David Winsemius a écrit :
>>> Upon reading it yesterday, it appeared as it would have required 
>>> some serious testing and there was no data on which to do any work.  
>>> You were clearly not taking the time to isolate the problem and 
>>> construct a dataset. But who knows? When you say "What I want to do 
>>> is. ... ,I would like the name of the list to be created in the loop 
>>> too", maybe all you needed was to be pointed to was:
>>>
>>> ?assign
>>>
>>> But if that were the case, then you lost most of your audience along 
>>> the way with a bunch of unneeded and obscure code.
>>>
>
> David Winsemius, MD
> Heritage Laboratories
> West Hartford, CT
>
>



More information about the R-help mailing list