如何访问列表中的数据帧位置

时间:2017-09-29 21:05:27

标签: r list dataframe extract

我按以下方式制作了data.frames列表:

dflist <- list()

for (i in 1:24) {
  name <- paste("tp",i,sep="")
  assign(name, read.csv(paste(i, "c.csv", sep=""), sep  = ";", header = TRUE))
  dflist[[i]] <- name
}

列表如下所示:

> dflist
[[1]]
[1] "tp1"

[[2]]
[1] "tp2"

和data.frames像这样:

> tp1
   X..     X1     X2     X3     X4     X5     X6     X7     X8     X9    X10    X11    X12
1    A 0.0463 0.0503 0.0478 0.0499 0.0501 0.0499 0.0495 0.0505 0.0491 0.0520 0.0492 0.0509
2    B 0.0503 0.0508 0.0495 0.0494 0.0498 0.0501 0.0497 0.0492 0.0496 0.0497 0.0495 0.0496

我现在如何访问data.frames的特定元素?

dflist[[1]][1,1]

不起作用.. 我在其他答案中搜索,但我不知道经常建议的'lapply'功能。

1 个答案:

答案 0 :(得分:1)

首先不要使用assign。如果您这样做,则需要get

get(dflist[[1]])[1, 1]

这至多是uggly。你将有24个df在全球环境中游荡,供你处理 更好的方法是使用lapply并将它们全部存储在dflist中,而不仅仅是它们的名称。

dflist <- lapply(1:24, function(i){
        read.csv(paste(i, "c.csv", sep=""), sep  = ";")
})

names(dflist) <- paste("tp", 1:24, sep="")

dflist$tp1[1, 1]

此外,您有sep = ";",因为这来自十进制标记为逗号的国家/地区吗?如果是这样,您可以使用该函数的其他版本来读取数据read.csv2。您不必手动设置它。 (他们都假设header = TRUE为默认值。)