[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