[R] How to create multi variables

arun smartpink111 at yahoo.com
Wed May 14 19:06:48 CEST 2014



Hi,
I guess you can also use ?assign with ?get
#For e.g.
set.seed(39)
mat1 <- matrix(sample(1:10, 10*5, replace=TRUE), ncol=10)
vec1 <- paste0("t",1:ncol(mat1))
for(i in 1:ncol(mat1)){
 assign(vec1[i], sum(mat1[,i]))
 }
 t1
#[1] 15
 t2
#[1] 28
sapply(vec1,get)
# t1  t2  t3  t4  t5  t6  t7  t8  t9 t10 
# 15  28  19  36  32  17  26  24  27  24 


##
set.seed(42)
x<-cbind(rnorm(10),rnorm(10),rnorm(10))
y<-cbind(rnorm(10),rnorm(10),rnorm(10))
ls1 <- paste0("lm",1:ncol(x))

for (i in 1:ncol(x))
 {
   assign(ls1[i], summary(lm(y[,i]~x[,i])))
 }

setNames(lapply(ls1,get),ls1)

A.K.






On Wednesday, May 14, 2014 11:53 AM, arun <smartpink111 at yahoo.com> wrote:


Hi,
Try:
ls <- vector("list",3)

for (i in 1:3)
 {
   ls[[i]] <- summary(lm(y[,i]~x[,i]))
 }

names(ls) <- paste0("lm",1:3)

A.K.



On Wednesday, May 14, 2014 10:45 AM, yuanzhi <yuanzhi.li at usherbrooke.ca> wrote:
Hi, I know all what you said, but it seems that you don't understand my
problem. I am sorry about my poor english level. I know that we can use a
list to store complicated objects. e.g.
x<-cbind(rnorm(10),rnorm(10),rnorm(10))
y<-cbind(rnorm(10),rnorm(10),rnorm(10))
lm1<-summary(lm(y[,1]~x[,1]))
lm2<-summary(lm(y[,2]~x[,2]))
lm3<-summary(lm(y[,3]~x[,3])) 
ls<-list(lm1=lm1,lm2=lm2,lm3=lm3)
so the results of linear models are stored in the list "ls", and we can use
ls[[1]] to cite the results of the first linear model. But I want to do this
part
lm1<-summary(lm(y[,1]~x[,1]))
lm2<-summary(lm(y[,2]~x[,2]))
lm3<-summary(lm(y[,3]~x[,3]))
in a loop if I have much more than 3 linear models to do. How can define a
list "ls"so that I can write the codes as

for (i in 1:3)
{
   ls[[i]]<-summary(lm(y[,i]~x[,i]))
}


Jeff Newmiller wrote
> Please do the reading I recommended before posting again. My example was
> numeric because your example was numeric. For more complicated data, a
> list is a type of vector that can hold such objects, and you would know
> this if you had read the intro document.
> ---------------------------------------------------------------------------
> Jeff Newmiller                        The     .....       .....  Go
> Live...
> DCN:<

> jdnewmil at .ca

> >        Basics: ##.#.       ##.#.  Live Go...
>                                       Live:   OO#.. Dead: OO#..  Playing
> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
> /Software/Embedded Controllers)               .OO#.       .OO#. 
> rocks...1k
> --------------------------------------------------------------------------- 
> Sent from my phone. Please excuse my brevity.
> 
> On May 13, 2014 7:22:08 PM PDT, yuanzhi <

> yuanzhi.li@

> > wrote:
>>Thank you for your reply.
>>
>>Yes, there is a problem according to you suggestion.
>>What if the value are not numerical, e.g. I want to use the variable to
>>store the results of linear regression.
>>can I use
>>myvec <- vector( "numeric", 10 )
>>for ( i in 1:10 ) {
>>  myvec[ i ] <- summary(lm(y~x)) # y and x are different values in each
>>loop.
>>}
>>?
>>
>>you advice seems only to be available when the function left allocates
>>a
>>numerical value to the variable, what if the function return other type
>>of
>>objects?
>>
>>
>>
>>
>>Jeff Newmiller wrote
>>> What is wrong with
>>> 
>>> myvec <- vector( "numeric", 10 )
>>> for ( i in 1:10 ) {
>>>   myvec[ i ] <- i
>>> }
>>> 
>>> ?
>>> 
>>> If you are using assign, IMHO you are probably doing whatever you are
>>> doing wrong.
>>> 
>>> If you want named elements, give the vector names:
>>> 
>>> names( myvec ) <- paste0( "t", 1:10 )
>>> 
>>> and you can refer to them
>>> 
>>> myvec[ "t3" ]
>>> 
>>> Go read the "Introduction to R" document again... particularly the
>>> discussion of indexing.
>>>
>>---------------------------------------------------------------------------
>>> Jeff Newmiller                        The     .....       .....  Go
>>> Live...
>>> DCN:<
>>
>>> jdnewmil at .ca
>>
>>> >        Basics: ##.#.       ##.#.  Live Go...
>>>                                       Live:   OO#.. Dead: OO#.. 
>>Playing
>>> Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
>>> /Software/Embedded Controllers)               .OO#.       .OO#. 
>>> rocks...1k
>>>
>>---------------------------------------------------------------------------
>>
>>> Sent from my phone. Please excuse my brevity.
>>> 
>>> On May 13, 2014 5:47:12 PM PDT, Yuanzhi Li <
>>
>>> Yuanzhi.Li@
>>
>>> > wrote:
>>>>Hi, everyone
>>>>
>>>>I want to create a series of variables (e.g. t1, t2..., t10) which
>>>>could 
>>>>be used in loops. My idea is to use function "assign"
>>>>
>>>>for (i in 1:10)
>>>>{
>>>>   assign(paste("t",i,sep=""), FUN) # allocate the value from FUN to 
>>>>variable ti
>>>>}
>>>>
>>>>But when I create a vector containing the names of these variables
>>and 
>>>>want to use the variables according to the subscript, it doesn't
>>works.
>>>>
>>>>t<-noquote(paste("t",1:10,sep=""))
>>>>t[1]
>>>>t1
>>>>it returns only the name of variable t1, but not the value allocated
>>to
>>>>
>>>>t1 by FUN. So what should I do to realize this?
>>>>
>>>>Or is there any better way to do this?
>>>>
>>>>Can we define a series of variables which can be used according to
>>the 
>>>>subscript like
>>>>t<-f(t1, t2..., t10),
>>>>then we have 10 variables which can be used directly?
>>>>for(i in 1:10)
>>>>{
>>>>  t[i]<-FUN# with the fines variables we can directly assign the
>>value 
>>>>of FUN to ti
>>>>}
>>>>These are just my thoughts, I don't know whether there are available
>>R 
>>>>codes to realized it. I am looking forward any help from you.
>>>>
>>>>Thanks in advance!
>>>>
>>>>Yuanzhi
>>>>
>>>>______________________________________________
>>>>
>>
>>> R-help@
>>
>>>  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@
>>
>>>  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.
>>
>>
>>
>>
>>
>>--
>>View this message in context:
>>http://r.789695.n4.nabble.com/How-to-create-multi-variables-tp4690465p4690470.html
>>Sent from the R help mailing list archive at Nabble.com.
>>
>>______________________________________________
>>

> R-help@

>  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@

>  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.





--
View this message in context: http://r.789695.n4.nabble.com/How-to-create-multi-variables-tp4690465p4690537.html

Sent from the R help mailing list archive at Nabble.com.

______________________________________________
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.



More information about the R-help mailing list