Julia236 Julia236 - 4 days ago 6
R Question

How to modify a certain row of a matrix, which has to be called by paste()

In a first large Loop I generated 1,000,000 matrices XY_1_1, ..., XY_1000_1000:

for (i in 1:1000){
for (j in 1:1000){
assign(paste0("XY",i,j ,sep='_'), matrix(ncol=10, nrow=4))
}
}


Now I want to assign different outcomes of a function (vector of length 10) to the rth row of the matrices, which should somehow like this:

for (r in 1:4){
for (i in 1000){
for (j in 1:1000){
assign(paste0("XY",i,j ,sep='_')[r,], function(i,j,r))
}
}
}


Unfortunately, I get the error
'incorrect number of dimensions'
.
Furthermore, I tried using the
get()
-Function:

for (r in 1:4){
for (i in 1000){
for (j in 1:1000){
get(paste0("XY",i,j ,sep='_'))[r,] <- function(i,j,r)
}
}
}


which brought the error
'target of assignment expands to non-language object'
. Does anyone know a proper solution? Let me know in case you need further information.

G5W G5W
Answer

How about

    for (r in 1:4){
      for (i in 1:1000){
        for (j in 1:1000){
            Row = function(i,j,r)
            eval(parse(text = paste0("M_",i,"_",j, "[r,] <- Row")))
        }
      }
    }

Although you might want to test this with the limits smaller than 1000 x 1000.

Comments