[R-es] Duda sobre construccion de vectores
Jorge I Velez
jorgeivanvelez en gmail.com
Lun Jul 25 19:05:05 CEST 2016
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 <fjroar en hotmail.com>:
> 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
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
[[alternative HTML version deleted]]
Más información sobre la lista de distribución R-help-es