R:命名数据帧

时间:2015-02-05 00:30:23

标签: r dataframe

我正在尝试阅读200多个CSV文件,每个文件都有多行和多列数字。将每个人作为一个单独的数据框架到达是最有意义的。

理想情况下,我想提供有意义的名字。因此,商店1,房间1的数据框将命名为store.1.room.1store.1.room.2。这将一直持续到store.100.room.1store.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文件作为单独的数据框?

由于

2 个答案:

答案 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, ]