2010-03-03 19 views
37

Supongamos que tengo una lista o marco de datos en R, y me gustaría obtener el índice de la fila, ¿cómo hago eso? Es decir, me gustaría saber en cuántas filas está compuesta una determinada matriz.¿Cómo obtener el número de índice de la fila en R?

+1

La pregunta aún está muy poco clara. – reinierpost

+1

Creo que es porque se trata de dos preguntas: la segunda oración es la que @BenBolker respondió 'nrow (x)' (es decir, dando las * dimensiones * del marco de datos). La primera oración es acerca de obtener números de fila, que Shane respondió (y nada 1 mejorado) 'as.integer (rownames (x))' –

Respuesta

10

No está del todo claro qué es exactamente lo que estás tratando de hacer.

Para hacer referencia a una fila de una trama de datos utilizar df[row,]

Para obtener la primera posición en un vector de algo utilización match(item,vector), donde el vector podría ser una de las columnas de su trama de datos, por ejemplo df$cname si la columna el nombre es cname.

Editar:

combinar estos que iba a escribir:

df[match(item,df$cname),]

Tenga en cuenta que el partido le da el primer elemento de la lista, por lo que si usted no está buscando un número de referencia único , es posible que desee considerar algo más.

+1

Esta es una buena respuesta a una pregunta diferente de la que creo que el alter ego de @ lebesgue está pidiendo. Si escribe 'head (df)', hay títulos sobre todas las columnas, excepto la ID de la fila. Entonces, creo que @lebesgue está buscando una función que permita el acceso a la identificación de la fila (la función 'row'). – isomorphismes

56

Estoy interpretando que su pregunta se trata de obtener números de fila.

  • Puede intentar as.numeric(rownames(df)) si no ha configurado los nombres de las filas. De lo contrario, use una secuencia de 1:nrow(df).
  • La función which() convierte un índice de fila VERDADERO/FALSO en números de fila.
+3

Esto es lo que hago también, ya que los nombres de fila de DF, incluso si son numéricos, no corresponden necesariamente al índice de fila: 'row (cars [34:50,]) [, 1]; as.integer (nombres de fila (autos [34:50,])) '. ¿Por qué usas 'as.numeric()' aquí? ¿No tendría más sentido usar 'as.integer()'? – naught101

2

si entiendo su pregunta, lo que desea es ser capaz de acceder a los elementos de una trama de datos (o lista) por fila:

x = matrix(ceiling(9*runif(20)), nrow=5 ) 
colnames(x) = c("col1", "col2", "col3", "col4") 
df = data.frame(x)  # create a small data frame 

df[1,]     # get the first row 
df[3,]     # get the third row 
df[nrow(df),]   # get the last row 

lf = as.list(df)   

lf[[1]]     # get first row 
lf[[3]]     # get third row 

etc.

8

Ver row en ?base::row. Esto proporciona los índices de fila para cualquier objeto similar a una matriz.

Cuestiones relacionadas