Buenas tardes, Francisco. Quizás no sea la manera mas eficiente, pero proporciona el resultado que buscas:
R> M <- matrix(c(2,3,3,4,5,6,7,7,8,11,10,5), nrow = 3, ncol = 4) R> index <- c(2,3,3) R> sapply(1:NROW(M), function(.row) M[.row,][index[.row]]) [1] 4 7 8 Saludos, Jorge.- 2016-07-25 11:54 GMT-05:00 Francisco Rodríguez <[email protected]>: > Hola buenas tardes comunidad, seguro que hay algo fácil, pero se me escapa > y es que estoy hoy algo torpe seguramente, a ver me gustaría hacer lo > siguiente: > Dada una matriz M (que puede ser muy grande), me gustaria crear un vector, > sin usar bucles (ya que cuando es muy grande, todo puede ser muy lento) del > siguiente modo. > Para cada una de sus filas, me gustaría seleccionar un único elemento de > una columna dada por otro vector, así por ejemplo: > -Si la matriz de partida es: > M <- matrix(c(2,3,3,4,5,6,7,7,8,11,10,5), nrow = 3, ncol = 4) > -Así pues se tiene que: > M > [,1] [,2] [,3] [,4][1,] 2 4 7 11[2,] 3 5 7 > 10[3,] 3 6 8 5 > -Y el vector indicador es: > Indicador <- c(2,3,3) > -Me gustaría tener una nuevo vector, cuyos componentes fueran (si el > vector se llamase Resultado) los siguientes: > Resultado{1} 4 7 8 > -Es decir sería la segunda componente del primer registro, la tercera > componente del segundo registro y la tercera componente del tercer registro > -No recuerdo si se digo hace tiempo algo de con la librería data.table, me > da igual tener que usar cualquier librería, pero el tema es tratar de hacer > que sea una operación vectorial que por ejemplo evite un bucle tal como: > Resultado <- vector("numeric", 3) > for (i in (1:3)){ > Resultado[i] = M[i, Indicador[i]]} > -El cuál, como he comentado sería lento si el número de filas de matriz > fuese muy elevado > Un saludo y muchas gracias > [[alternative HTML version deleted]] > > > _______________________________________________ > R-help-es mailing list > [email protected] > https://stat.ethz.ch/mailman/listinfo/r-help-es > [[alternative HTML version deleted]] _______________________________________________ R-help-es mailing list [email protected] https://stat.ethz.ch/mailman/listinfo/r-help-es
