On Wed, 22 Mar 2006, Domenico Vistocco wrote:

> Dear All,
> It is difficult to summarize the question in few words. So, please,
> look at the following example.
> Thanks in advance,
> domenico
>
> ----------------------------------------------------------------------------------------------------------------------------------------------------------
> rm(list = ls())
> posfix=1:5* 10
> for(i in posfix)
>       assign(paste("matX.",i,sep=""),matrix(0,3,2))
> ls()
>
> [1] "i"       "matX.10" "matX.20" "matX.30" "matX.40" "matX.50" "posfix"
> AT THIS STEP I HAVE 5 MATRIX OF ZEROS (3 ROWS PER 2 COLUMNS)
> NOW I WOULD LIKE TO ASSIGN TO A ROW OF THE  5 MATRICES A VALUE
> RELATED TO THE INDEX OF A FOR LOOP

Don't do that. Make matX a list of matrices, so that matX.10 is matX[[1]], 
matX.20 is matX[[2]].

> for(i in 1:length(posfix))
>       assign(paste("matX.",posfix[i],"[",i,",]",sep=""),i)
> ls()
>
>  [1] "i"           "matX.10"     "matX.10[1,]" "matX.20"     "matX.20[2,]"
>  [6] "matX.30"     "matX.30[3,]" "matX.40"     "matX.40[4,]" "matX.50"
> [11] "matX.50[5,]" "posfix"
>
> ??????????????????
> WHY IT DOES NOT ASSIGN THE VALUE TO THE ROWS OF THE PRE-INITIALIZED
> VARIABLES. WHERE IS MY ERROR?

The help page for assign says
     'assign' does not dispatch assignment methods, so it cannot be
      used to set elements of vectors, names, attributes, etc.

There is a solution using eval and substitute, but you really don't want 
to go there.

        -thomas

______________________________________________
[email protected] mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide! http://www.R-project.org/posting-guide.html

Reply via email to