R 打开多个csv并将其放入数据框中

R 打开多个csv并将其放入数据框中,r,csv,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],

我在一个文件夹中有几个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)
}
}

文件在
i==1时获取列名,并将它们分配给
tmp
,这样您就可以
rbind()

setwd(“”)#您在这里的路径

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

例如:
df这里有一种简单快速的方法,可以读取多个数据帧,并使用
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))
#加载库
库(数据表)
#获取用关键字命名的所有文件的列表,例如所有“.csv”文件

文件名和“不起作用”的确切含义是什么?我得到了以下错误:rep中的错误(xi,length.out=nvar):尝试复制“closure”类型的对象,这可能是因为您在
rbind
中键入了
矩阵而不是
matriz
。这是真的,但仍然不起作用。。。现在我得到了以下错误:rep中的错误(xi,length.out=nvar):尝试复制“closure”类型的对象……好吧,我不知道您正在运行什么代码了。但是这个错误可能意味着你正在使用一个函数名,其中R需要一个原子值变量。Eric,非常感谢。这段代码是有效的,但它给出了每个参与者的列名称,我不希望这样。我想要的是将最后19个参与者的数据帧合并到第一个参与者的数据帧中。因此,指令应该只为第一个参与者读取列的名称。我不明白,@unomas83。当
i==1
时,代码仅获取标题并定义
cname
。在随后的运行中,
tmp
不带标题进入,并且
R
分配新的变量名。您希望
rbind()
tmp
matriz
,因此我们运行
names(tmp)
以确保
tmp
具有相同的列名。我认为它应该完全符合你的要求。你可以考虑分享一些不工作的截图。再次感谢,埃里克。正如您在下面的输出中所看到的,它为我提供了每个参与者的列名!。你的其他文件有标题吗?我假设没有,因为您指定了
headers=FALSE
。如果其他文件有标题,请将
else
中的代码更改为
headers=TRUE
names(tmp)Eric,非常感谢。现在可以了!是的,所有文件都有标题,因为它们是由软件自动生成的每个参与者的数据。现在,我将尝试理解函数实际在做什么,但它工作得非常完美。再次感谢这并不能回答这个问题。您可以搜索类似的问题,或参考页面右侧的相关和链接问题以查找答案。如果您有一个相关但不同的问题,请提出一个新问题,并包括一个指向此问题的链接,以帮助提供上下文。请不要发表评论作为回答,因为你的声誉很低。
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))
}
# 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))