[R] Question on "assign(paste.."

Erik Iverson iverson at biostat.wisc.edu
Wed Mar 5 03:36:39 CET 2008


Hello -

I agree with Rolf that a (named) list may be better here.  If you don't 
want to use a for loop, see if the following works using lapply?

probTrt <- list(Trt1 = c(0.064,0.119,0.817),
                 Trt2 = c(0.053,0.125,0.823),
                 Trt3 = c(0.111,0.139,0.750),
                 Trt4 = c(0.351,0.364,0.285))

samp <- lapply(probTrt, function(x) rmultinom(10, size = 5, prob = x))
lapply(samp, rowMeans)

-Erik Iverson

Rolf Turner wrote:
> Try:
> 
> 	for(t in 4) { # Did you mean ``1:4''?
> 		nm <- paste("Trt",sep="")
> 		assign(nm,rmultinom(10,size=5,prob=probTrt[t,]))
> 		print(rowMeans(get(nm)))
> 	}
> 
> Notes:
> 
> 	(1) You were missing the ``get(t)''; I introduced ``nm'' to save  
> some typing.
> 
> 	(2) You need the print() inside the for loop, or you won't see any  
> results.
> 
> 	(3) The letter ``t'' is a bad name for an index, since it is the  
> name of the
> 	transpose function.  No *real* harm, but a dubious practice.
> 
> 	(4) You'd probably be better off using a list, rather than constructing
> 	    a sequence of names.  As in
> 
> 	Trt <- list()
> 	for(i in 1:4) {
> 		Trt[[i]] <- rmultinom(10,size=5,prob=probTrt[t,])
> 		print(rowMeans(Trt[[i]])
> 	}
> 
> 		cheers,
> 
> 			Rolf Turner
> 
> 
> On 5/03/2008, at 1:44 PM, Kyeongmi Cheon wrote:
> 
>> Hello,
>> I'm having trouble in using "assign(paste ..." command . I could  
>> create
>> several dataframes following trinomial distribution using it but it  
>> could
>> not be used to check their row means of the created dataframe.
>>
>> For example, the following works:
>>
>> probTrt=matrix(0,4,3);
>> probTrt;
>> #malf, death, normal
>> probTrt[1,]=c(0.064,0.119,0.817);#for Trt 1
>> probTrt[2,]=c(0.053,0.125,0.823);#for Trt 2
>> probTrt[3,]=c(0.111,0.139,0.750);#for Trt 3
>> probTrt[4,]=c(0.351,0.364,0.285);#for Trt 4
>> for (t in 4){
>>         assign(paste("Trt",t,sep=""),rmultinom(10, size = 5,
>> prob=probTrt[t,]));
>>     }
>>
>>
>>
>> But the following does not work.
>> for (t in 4){
>>         assign(paste("Trt",t,sep=""),rmultinom(10, size = 5,
>> prob=probTrt[t,]));
>>         rowMeans(paste("Trt",t,sep=""));
>>     }
>>
>>
>> How can I use it in functions like rowMeans so that I don't have to  
>> type all
>> the object names? Thank you.
>>
>> Kyeongmi
>>
>> 	[[alternative HTML version deleted]]
>>
>> ______________________________________________
>> 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.
> 
> 
> ######################################################################
> Attention:\ This e-mail message is privileged and confid...{{dropped:9}}
> 
> ______________________________________________
> 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