2013-02-21 82 views
0

我有一个输入文件。如何动态地在数据框中存储数据?

猫文件

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

input<-read.table(file) 

我想在数据帧加载此,这里的名字是键和值是一个行数的向量,这样我可以得到的值。

如何动态地在dataframe中存储数据?

回答

1

如果与第一列存储的值作为rownames您可以访问使用这种形式主义:

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

你正在寻找一个list我想:现在

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 

,您可以通过访问这些载体:df.l[["ABC"]]

另外,如果你想保持它作为一个data.frame,你应该让你的data.frame,因为它是列名的第一列:

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 

现在,您可以访问它类似于访问listdata.frame也在内部为list)。

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