Hola Francisco,
Esta es otra forma,
> M[ as.matrix(data.frame(i = 1:length(index), j = index))]
[1] 4 7 8
Saludos,
Carlos Ortega
www.qualityexcellence.es
El 25 de julio de 2016, 19:06, Francisco Rodríguez <fjroar en hotmail.com>
escribió:
> Creo que me puede valer, muchas gracias Jorge, voy a probarlo y te cuento
>
> From: jorgeivanvelez en gmail.com
> Date: Mon, 25 Jul 2016 12:05:05 -0500
> Subject: Re: [R-es] Duda sobre construccion de vectores
> To: fjroar en hotmail.com
> CC: r-help-es en r-project.org
>
> 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]]
>
>
> _______________________________________________
> R-help-es mailing list
> R-help-es en r-project.org
> https://stat.ethz.ch/mailman/listinfo/r-help-es
>
--
Saludos,
Carlos Ortega
www.qualityexcellence.es
[[alternative HTML version deleted]]