我正在尝试阅读200多个CSV文件,每个文件都有多行和多列数字。将每个人作为一个单独的数据框架到达是最有意义的。
理想情况下,我想提供有意义的名字。因此,商店1,房间1的数据框将命名为store.1.room.1
和store.1.room.2
。这将一直持续到store.100.room.1
,store.100.room.2
等。
我可以将每个文件读入指定的数据框。例如:
store.1.room.1 <- read.csv(filepath,...)
但是如何使用For循环创建动态创建的数据框名称?
例如:
for (i in 1:100){
for (j in 1:2){
store.i.room.j <- read.csv(filepath...)
}
}
或者,我是否应该考虑另一种方法,而不是将每个csv文件作为单独的数据框?
由于
答案 0 :(得分:1)
您可以使用上面的read.csv
创建数据框,但将它们存储到列表中。然后为列表中的每个项目(即数据框)命名:
# initialize an empty list
my_list <- list()
for (i in 1:100) {
for (j in 1:2) {
df <- read.csv(filename...)
df_name <- paste("store", i, "room", j, sep="")
my_list[[df_name]] <- df
}
}
# now you can access any data frame you wish by using my_list$store.i.room.j
答案 1 :(得分:0)
我不确定我是否在回答您的问题,但您绝不希望将这些CSV文件存储到单独的数据框中。在你的情况下,我会做的是:
set <- data.frame()
for (i in 1:100){
##calculate filename here
current.csv <- read.csv(filename)
current.csv <- cbind(current.csv, index = i)
set <- rbind(set, current.csv)
正在使用附加列来识别测量来自哪些csv文件。
编辑:
这对于tapply
的某些向量中应用data.frame
非常有用。此外,如果您想仅保留一个csv的测量值(让我们说一个索引为5的csv),您可以输入
single.data.frame <- set[set$index == 5, ]