How to index an element of a list object in R
indexing, lapply, list, r, read.table
Solution
Indexing a list is done using double bracket, i.e. `hypo_list[[1]]` (e.g. have a look here: http://www.r-tutor.com/r-introduction/list). BTW: `read.table` does not return a table but a dataframe (see value section in `?read.table`). So you will have a list of dataframes, rather than a list of table objects. The principal mechanism is identical for tables and dataframes though.
Note: In R, the index for the first entry is a `1` (not `0` like in some other languages).
Dataframes
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
Table objects
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
Now with the list
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
Problem
I'm doing the following in order to import some txt tables and keep them as list: ``` # 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 ``` I want to access one specific element, let's say hypo_list[1]. Since each element represents a table, how should I procced to access particular cells (rows and columns)? I would like to do something like it: ``` a<-hypo_list[1] a[1,2] ``` But I get the following error message: ``` Error in a[1, 2] : incorrect number of dimensions ``` Is there a clever way to do it?