[R] assigning values to elements of matrixes
Anthoni, Peter (IMK)
peter.anthoni at kit.edu
Wed Dec 23 17:05:35 CET 2015
Hi,
How about the following:
foo2 <- function(s,i,j,value)
{
M = get(paste("M_",s,sep=""))
M[i,j] = value
assign(paste("M_",s,sep=""),M, envir = .GlobalEnv)
}
foo2("a",1,2,15)
cheers
Peter
> On 23 Dec 2015, at 09:44, Matteo Richiardi <matteo.richiardi at gmail.com> wrote:
>
> I am following the example I find on ?assign:
>
> a <- 1:4
> assign("a[1]", 2)
>
> This appears to create a new variable named "a[1]" rather than
> changing the value of the vector.
>
> Am I missing something here? How can I assign a value to a specified
> element of a vector/matrix?
>
> Of course, my problem is slightly more involved, but I guess the above
> is its core. For those interested, I have the two matrixes
> M_a <- matrix(0,10,10)
> M_b <- matrix(0,10,10)
>
> I want to have a function that assigns a value to a specific element
> of one of the matrix, as in
> foo <- function(s,i,j,value){
> assign(paste("M_",s)[i,j],value)
> }
>
> This however does not work:
>
> foo('a',1,1,1)
>
> Error in paste("M_", s)[1, j] : incorrect number of dimensions
>
> Following the ?assign help, I tried
>
> foo2 <- function(s,i,j,value){
> assign(paste("M_",s,"[i,j]"),value, envir = .GlobalEnv)
> }
>
> but this produces the problem I described above (namely, a new
> variable is created, rather than replacing the specified element of
> the matrix).
>
> I know that in this example I could simply pass the matrix as an
> argument to the function, but I am interested in understanding how
> 'assign' work.
>
> Many thanks for your help.
>
> Matteo
>
> ______________________________________________
> R-help at r-project.org mailing list -- To UNSUBSCRIBE and more, see
> 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