打开几个csv并将它们放在数据框中

时间:2014-07-05 22:16:07

标签: r csv

我在一个文件夹中有几个csv文件。每个文件代表一个参与者的数据。我正在尝试创建一个函数来打开所有文件并将它们放在一个数据框中。对于第一个文件,该函数应该读取标题,但不能读取其他文件。我试过这个:

files<-list.files(path="D:/r")
for(i in 1:length(files)){
if(i==1){
    matriz<-read.csv(files [i], header=TRUE)
}else{
    tmp<-read.csv(files[i],header=FALSE)
    matriz<-rbind(matrix,tmp)
}
}

然而,它不起作用......任何想法?谢谢!

3 个答案:

答案 0 :(得分:1)

i==1后获取您的列名,并将其分配到tmp,以便rbind()

setwd("") # your path here
files <- list.files()
for (i in 1:length(files)) {
  if (i==1) {
    matriz <- read.csv(files[i], header=TRUE)
    cname <- names(matriz)       # get column names when reading in header
  } else {
    tmp <- read.csv(files[i], header=FALSE)
    names(tmp) <- cname          # assign column names so you can bind
    matriz <- rbind(matriz,tmp)  # change error in matrix/z
  }
}

答案 1 :(得分:1)

这是一种简单快捷的方法,可以使用fread

读取多个数据帧并将它们绑定到单个数据帧中
# Load library
  library(data.table)

# Get a List of all files named with a key word, say all `.csv` files
  filenames <- list.files("C:/your/folder", pattern="*.csv", full.names=TRUE)

 # Load and bind all data sets
   data <- rbindlist(lapply(filenames,fread))

答案 2 :(得分:0)

当我没有定义我绑定的矩阵时,我遇到了类似的错误。

例如:     df&lt; - data.frame(variable = character(),x = numeric(),stringsAsFactors = FALSE)

在运行if。之前

for(i in 1:3000){

filename<- paste(c("Aone.txt.", i), collapse = "")
x <- read.table(filename, header=TRUE, sep=" ", row.names = NULL)
df<- rbind(df,x)    
print(i)
print(nrow(df))
}