2013-02-21 5 views
0

J'ai un fichier d'entrée.Comment stocker dynamiquement des données dans des données?

fichier chat

ABC 2 3 4 
DEF 3 4 5 
FRD 3 5 6 

input<-read.table(file) 

Je veux charger cela dans dataframe où les noms sont des éléments clés et les valeurs sont vecteur de nombres dans une rangée afin que je puisse obtenir les valeurs.

Comment puis-je stocker dynamiquement les données dans les données?

Répondre

1

Si vous avez enregistré ces valeurs avec la première colonne comme rownames vous pouvez accéder à l'aide de ce formalisme:

dfrm["ABC", ] # result c(2,3,4) 

dfrm <- read.table(text="V1 V2 V3 
    ABC 2 3 4 
    DEF 3 4 5 
    FRD 3 5 6", header=TRUE) 
dfrm["ABC" , ] 
#  V1 V2 V3 
# ABC 2 3 4 
1

Vous cherchez un list Je suppose:

df <- structure(list(V1 = structure(1:3, 
     .Label = c("ABC", "DEF", "FRD"), class = "factor"), 
     V2 = c(2L, 3L, 3L), V3 = 3:5, V4 = 4:6), 
     .Names = c("V1", "V2", "V3", "V4"), class = "data.frame", 
     row.names = c(NA, -3L)) 

df.l <- as.list(df[,2:4]) 
names(df.l) <- df[,1] 

# $ABC 
# [1] 2 3 3 

# $DEF 
# [1] 3 4 5 

# $FRD 
# [1] 4 5 6 

Maintenant, vous pouvez accéder à ces vecteurs en faisant: df.l[["ABC"]]

Sinon, si vous voulez le garder comme data.frame, vous devriez faire la première colonne de votre data.frame comme il est des noms de colonnes:

df.o <- df[,2:4] 
names(df.o) <- df[,1] 

# ABC DEF FRD 
# 1 2 3 4 
# 2 3 4 5 
# 3 3 5 6 

maintenant, vous pouvez y accéder semblable à accéder à un list (un data.frame est également un list).

> df.o[["ABC"]] # or equivalently as df$ABC 
# [1] 2 3 3 
Questions connexes