我按以下方式制作了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'功能。
答案 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
为默认值。)