Je fais ce qui suit afin d'importer des tables txt et de les conserver comme liste:
# 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
Je veux accéder à un élément spécifique, disons hypo_list [1]. Étant donné que chaque élément représente un tableau, comment dois-je procéder pour accéder à des cellules particulières (lignes et colonnes)?
Je voudrais faire quelque chose comme ça:
a<-hypo_list[1]
a[1,2]
Mais j'obtiens le message d'erreur suivant:
Error in a[1, 2] : incorrect number of dimensions
Existe-t-il un moyen intelligent de le faire?
Merci d'avance!
L'indexation d'une liste se fait à l'aide d'un double crochet, c'est-à-dire hypo_list[[1]]
(par exemple, regardez ici: http://www.r-tutor.com/r-introduction/list ). BTW: read.table
ne renvoie pas une table mais une trame de données (voir la section valeur dans ?read.table
). Vous aurez donc une liste de cadres de données, plutôt qu'une liste d'objets de table. Le mécanisme principal est cependant identique pour les tableaux et les cadres de données.
Remarque : Dans R, l'index de la première entrée est un 1
(ne pas 0
comme dans d'autres langues).
Cadres de données
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
Objets de table
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
Maintenant avec la liste
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