识别rbind进程中有问题的csv文件-错误消息

识别rbind进程中有问题的csv文件-错误消息,r,R,每隔几个月,我就会收到大约200个csv文件,我将rbind合并到一个数据集中。我在网上找到了下面的脚本,它很好地完成了这项工作 setwd("directory that contains my csv files") filenames <- list.files() dt <- do.call("rbind", lapply(filenames, read.csv, header = TRUE)) 但是,除非文件具有相同的列数和列名,否则脚本将无法工作。最近,我收到的文件中约

每隔几个月,我就会收到大约200个csv文件,我将rbind合并到一个数据集中。我在网上找到了下面的脚本,它很好地完成了这项工作

setwd("directory that contains my csv files")
filenames <- list.files()
dt <- do.call("rbind", lapply(filenames, read.csv, header = TRUE))
但是,除非文件具有相同的列数和列名,否则脚本将无法工作。最近,我收到的文件中约有10%的列名拼写错误或列数错误

是否有一种方法可以列出不起作用的文件,这样我就可以通知它们的发送者修复它们

您可以通过假设我有以下4个文件来复制该示例。 文件1.csv A B C1 2 34 5 6

文件2.csv A B C4 5 63 2 1

文件3.csvA B D7 8 96 5 4

文件4.csvA B C D E 7 8 9 4 56 5 4 2 3

我希望能够生成一个简单显示


file3.csv flle4.csv

您可以在rbind之前重命名data.frames:

试试这个:

filenames   <-  c("file1.csv", "file2.csv", "file3.csv")
sapply(filenames, read.csv, stringsAsFactors = FALSE, header = FALSE, nrows = 1)

如果列数不相等,它将返回一个列表

您的输入使我意识到我需要进一步澄清我的问题。您的建议假定所有提交的文件都具有正确的设置。我已经更新了我的问题,添加了一个场景,显示用户可能会改变字段的顺序。总之,我需要识别错误文件。谢谢你的帮助@TCS你应该处理好这个特殊的案子。但想法是一样的。我编辑我的答案。根据你的建议,我可以想象一个解决方案,但我不知道如何执行它。如果我们假设第一个csv具有正确的字段,那么我想创建具有两个变量的新数据集。第一个简单地提供了csv文件名的列表。第二个是一个二进制变量T/F,它比较第一个文件的名称与其余每个文件的名称,并返回T或F。这样,我可以快速地将重点放在比较结果为F的文件上。感谢您的帮助。
filenames   <-  c("file1.csv", "file2.csv", "file3.csv")
sapply(filenames, read.csv, stringsAsFactors = FALSE, header = FALSE, nrows = 1)
   [,1] [,2] [,3]
V1 "A"  "A"  "A" 
V2 "B"  "B"  "B" 
V3 "C"  "C"  "D"