我有一个输入文件。
cat file
ABC 2 3 4
DEF 3 4 5
FRD 3 5 6
input<-read.table(file)
我想在数据框中加载它,其中名称是键,值是行中数字的向量,以便我可以获取值。
如何动态地将数据存储在数据框中?
答案 0 :(得分: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
现在,您可以访问它,类似于访问list
(data.frame
内部也是list
。
> df.o[["ABC"]] # or equivalently as df$ABC
# [1] 2 3 3
答案 1 :(得分: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