相关疑难解决方法(0)

如何一次导入多个.csv文件?

假设我们有一个包含多个data.csv文件的文件夹,每个文件包含相同数量的变量,但每个变量包含不同的时间.R中有没有办法同时导入它们而不必单独导入它们?

我的问题是我有大约2000个数据文件要导入,只需使用代码就可以单独导入它们:

read.delim(file="filename", header=TRUE, sep="\t")
Run Code Online (Sandbox Code Playgroud)

不是很有效率.

csv import r r-faq

195
推荐指数
9
解决办法
29万
查看次数

错误:在将读取器形式0.1.1更新为0.2.0后使用dplyr :: bind_rows时损坏数据帧

我刚刚将readr软件包从版本0.1.1 更新到0.2.0,但现在在抛出错误之前有效的操作.

在更新之前,我使用readr包执行此操作:

file.list <- list.files(<path>, pattern='*.csv')

df.list <- lapply(file.list, read_csv2)
df.list <- lapply(df.list, function(x) x[-1,])
Run Code Online (Sandbox Code Playgroud)

最后一步是必要的,因为我有一些带有特殊字符的长标题,以某种方式导致额外的行被读取.这是另一个问题,但只是删除第一行一直工作到那时.

read_csv2 警告我有关列名称的问题但是,如上所述,我通过删除行来修复:

Warning: 1 parsing failure.
  row col    expected      actual
   1  -- 227 columns 222 columns
Run Code Online (Sandbox Code Playgroud)

然后我继续将所有数据帧绑定到一个dplyr::bind_rows(因为每个.csv具有相同的头).这之前完美无缺,但现在当我这样做时,我得到了

> full.data <- bind_rows(df.list)
Error: corrupt data frame
Run Code Online (Sandbox Code Playgroud)

我没有改变任何其他东西(相同的R版本,相同的RStudio版本,没有更新其他包).有经验的人有什 与read_csv2的工作方式相比,版本0.1.1有任何重大变化.

谢谢

r dplyr readr

1
推荐指数
1
解决办法
1656
查看次数

将循环中创建的表绑定在一起

我设法创建一个循环,打开我在文件夹中的csv文件,并在第一列中添加文件名.但是,我不知道如何将所有创建的表放在一起,以便循环后的最终输出是一个data.frame与所有csv一起(文件名作为第一列).我尝试使用cbind,但它不起作用.任何帮助都感激不尽.这是我的尝试:

csvfilenames <- list.files("/Users/carlos/Desktop/TestCSVFilesToMerge/",
                   pattern="*.csv", all.files=FALSE, full.names=FALSE) #creates a list with the file names
csvfilenames

for(i in 1:length(csvfilenames)) 

{
a=csvfilenames[i]
temp1<-read.csv(file=paste("/Users/carlos/Desktop/TestCSVFilesToMerge/",a,sep=""), sep=";", header=T)
temp2<-cbind("FileName"=a,temp1[,1:ncol(temp1)]) #add a column called FileName in position 1
temp[a]=temp2 
}
output=rbind(temp[[a]])
output
Run Code Online (Sandbox Code Playgroud)

r rbind cbind

-3
推荐指数
1
解决办法
609
查看次数

标签 统计

r ×3

cbind ×1

csv ×1

dplyr ×1

import ×1

r-faq ×1

rbind ×1

readr ×1