[R-es] Selección de observaciones

Rubén Roa rroa en azti.es
Vie Oct 8 14:59:45 CEST 2010


un poco 'convoluted' pero parece que hace lo que quieres en una linea

aa <- matrix(11:19,3,3)
k <- c(12,15)
cols <- 1:2
aa[which(match(aa[,cols],k,nomatch=0)!=0)[1],]
#[1] 12 15 18

HTH

R.

____________________________________________________________________________________ 

Dr. Rubén Roa-Ureta
AZTI - Tecnalia / Marine Research Unit
Txatxarramendi Ugartea z/g
48395 Sukarrieta (Bizkaia)
SPAIN



> -----Mensaje original-----
> De: r-help-es-bounces en r-project.org 
> [mailto:r-help-es-bounces en r-project.org] En nombre de Ignacio 
> Ramos Alvarez
> Enviado el: viernes, 08 de octubre de 2010 12:00
> Para: r-help-es en r-project.org
> Asunto: [R-es] Selección de observaciones
> 
> Hola a todos.
> Estoy atascado en un sitio que no me he encontrado antes, 
> debe ser fácil y rápido, a ver si alguien me puede ayudar.
> 
> Puesto fácil, tengo:
> 
> > aa <- matrix(11:19,3,3)
> > aa
>      [,1] [,2] [,3]
> [1,]   11   14   17
> [2,]   12   15   18
> [3,]   13   16   19
> 
> Quiero la fila cuyo primer elemento es 12 y el segundo 15.
> 
> > aa[aa[,1:2] == (c(12,15)),]
> Error: (subscript) logical subscript too long
> 
> ¿Entonces?
> 
> > aa[aa[,1:2] == t(c(12,15)),]
> Error in aa[, 1:2] == t(c(12, 15)) : non-conformable arrays
> 
> Puedo hacer, claro,
> > aa[aa[,1]==12 & aa[,2]==15,]
> [1] 12 15 18
> 
> Pero necesito algo más "elegante" ya que la selección es 
> sobre bastantes más columnas.
> 
> Gracias de antemano y un saludo.
> 
> 
> --
> Ignacio Ramos Álvarez
> i.ramos.alvarez en gmail.com
> 
> 	[[alternative HTML version deleted]]
> 
> 



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