studio listas funciones filtrar filas eliminar datos data crear concatenar comandos columnas r list indexing lapply read.table

listas - funciones en r studio



Cómo indexar un elemento de un objeto de lista en R (1)

Estoy haciendo lo siguiente para importar algunas tablas txt y mantenerlas como una lista:

# set working directory - the folder where all selection tables are stored hypo_selections<-list.files() # change object name according to each species hypo_list<-lapply(hypo_selections,read.table,sep="/t",header=T) # change object name according to each species

Quiero acceder a un elemento específico, digamos hipo_list [1]. Como cada elemento representa una tabla, ¿cómo debo procurar acceder a celdas particulares (filas y columnas)?

Me gustaría hacer algo así:

a<-hypo_list[1] a[1,2]

Pero me sale el siguiente mensaje de error:

Error in a[1, 2] : incorrect number of dimensions

¿Hay una manera inteligente de hacerlo?

¡Gracias por adelantado!


La indexación de una lista se realiza mediante un paréntesis doble, es decir, hypo_list[[1]] (p. Ej., hypo_list[[1]] aquí: http://www.r-tutor.com/r-introduction/list ). BTW: read.table no devuelve una tabla sino un marco de datos (consulte la sección de valores en ?read.table ). Por lo tanto, tendrá una lista de marcos de datos, en lugar de una lista de objetos de tabla. Sin embargo, el mecanismo principal es idéntico para tablas y marcos de datos.

Nota : En R, el índice para la primera entrada es un 1 (no 0 como en otros idiomas).

Marcos de datos

l <- list(anscombe, iris) # put dfs in list l[[1]] # returns anscombe dataframe anscombe[1:2, 2] # access first two rows and second column of dataset [1] 10 8 l[[1]][1:2, 2] # the same but selecting the dataframe from the list first [1] 10 8

Objetos de mesa

tbl1 <- table(sample(1:5, 50, rep=T)) tbl2 <- table(sample(1:5, 50, rep=T)) l <- list(tbl1, tbl2) # put tables in a list tbl1[1:2] # access first two elements of table 1

Ahora con la lista

l[[1]] # access first table from the list 1 2 3 4 5 9 11 12 9 9 l[[1]][1:2] # access first two elements in first table 1 2 9 11