[R-es] Duda sobre construccion de vectores

Francisco Rodríguez fjroar en hotmail.com
Lun Jul 25 19:06:47 CEST 2016


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]]



Más información sobre la lista de distribución R-help-es