es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Repitiendo los elementos de matriz en R.

Me gustaría nombrar los elementos de una matriz según un bucle en R. No lo logré usando el siguiente comando ni simplemente usando paste0("M", u).

for (u in 1:3) {
assign(paste0("M", u)) <- matrix(nrow=10, ncol=10)
}

Obtuve el mensaje: Error in paste0("M", u) <- matrix(nrow = 10, ncol = 10) :
destino de la asignación se expande a un objeto fuera del lenguaje
.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    El mensaje de error que recibiste en R indica que el destino de la asignación se está expandiendo a un objeto fuera del lenguaje. En otras palabras, la función assign() no reconoce el objeto que estás tratando de crear.

    Una solución a este problema es utilizar una lista para nombrar y almacenar las matrices creadas en el bucle. Intenta utilizar el siguiente código en su lugar:

    M <- list()
    
    for (u in 1:3) {
      M[[u]] <- matrix(nrow=10, ncol=10)
      colnames(M[[u]]) <- paste0("M", u, "_", 1:10) # nombrando las columnas
      rownames(M[[u]]) <- paste0("M", u, "_", 1:10) # nombrando las filas
    }
    

    Esto creará una lista M que contiene las tres matrices que creaste en el bucle, con nombres de columna y fila que incluyen el índice del bucle u. Puedes acceder a cada matriz utilizando M[[1]], M[[2]] y M[[3]].

Comments are closed.