>>>>> "Jerome" == Jerome Goudet <[EMAIL PROTECTED]>
>>>>>     on Sun, 05 Nov 2006 16:08:33 +0100 writes:

    Jerome> Dear all,
    Jerome> I am trying to use the Matrix package to do some calculations on 
rather 
    Jerome> large and sparse matrices.  An example of such a matrix is given 
below. 

    Jerome> mig<-0.2
    Jerome> side<-10

    Jerome> np<-side^2
    Jerome> mig.mat<-matrix(0,np,np)
    Jerome> diag(mig.mat[1:(np-side),(side+1):np])<-mig/4
    Jerome> diag(mig.mat[(side+1):np,1:(np-side)])<-mig/4
    Jerome> diag(mig.mat[-np,-1])<-mig/4
    Jerome> nomig<-which(1:(side^2-1)%%side==0)
    Jerome> diag(mig.mat[-np,-1])[nomig]<-0
    Jerome> diag(mig.mat[-1,-np])<-mig/4
    Jerome> diag(mig.mat[-1,-np])[nomig]<-0
    Jerome> diag(mig.mat)<-1-apply(mig.mat,2,sum)

    Jerome> Here, side is set to 10, but ideally, I'd like it to be 500. 

    Jerome> I tried to simply replace matrix by Matrix in the code above, but 
    Jerome> obviously, it did not work...
            ^^^^^^^^^

    Jerome> The error came from the line below:

    Jerome> diag(mig.mat[1:(np-side),(side+1):np])<-mig/4

    Jerome> the diag part is ok, but it seems that I cannot assign values to 
this 
    Jerome> vector.

Yes, "diag<-", the function which is called for this, does not
work for 'Matrix' matrices, actually for two reasons :

1) it has check which is not appropriate for 'Matrix' matrices
2) it is based on  
         M[ cbind(i,j) ] <- value

   the famous not-well-enough-known other way of indexing in S
   and R,

   but this way of indexing and index-assignment has been on our
   TODO list, but has not yet been implemented for 'Matrix'
   matrices.

Your use-case is a good incentive for 
Doug Bates and me (the 'Matrix' authors) to implement it -- for
a next version of the Matrix package
  { BTW: your version 0.9975-3 is outdated anyway,
         and you *should* update.packages()  
  }

Because of the above, I'll probably also be able to help you in
a short while with a workaround before this works
out-of-the-box,
but please do upgrade to the latest released version of 
Matrix (0.9975-5), in any case.


    Jerome> I would be very glad for any help on this, or on pointers on how to 
    Jerome> construct Matrices.

    Jerome> As I am not on the list, please could you answer to
    Jerome> [EMAIL PROTECTED]

    Jerome> Many thanks in advance.

you're welcome:
Martin Maechler, ETH Zurich

    Jerome> R 2.4.0
    Jerome> Windows XP
    Jerome> Matrix package version 0.9975-3

______________________________________________
R-help@stat.math.ethz.ch 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.

Reply via email to