如何取消列出和修改csv文件?
我在目录中有很多csv文件。它们都有两列和不等的行数。我使用
制作了一个列表list.files(pattern=".csv$") # use the pattern argument to define a common pattern for import files with regex. Here: .csv
list.filenames<-list.files(pattern=".csv$")
list.data<-list()
for (i in 1:length(list.filenames))
{
list.data[[i]]<-read.csv(list.filenames[i])
}
names(list.data)<-list.filenames
数据如下:
$`xxx-xxx.csv`
PositionX Value
1 2 -107.068
2 6 -35.074
...
$`xxx1-xxx1.csv`
PositionX Value
1 2 -9.230
2 6 -9.230
...
上面提到的格式有数千个csv文件。我只想把它们绑在一起,没有标题。例如,我希望:
PositionX Value 1 2 -107.068 2 6 -35.074 3 2 -9.230 4 6 -9.230
我已经尝试过以下解决方案:
big.list.of.data.frames <- lapply(list.data, function(x){
+ read.table(x, skip = 3, header = TRUE, stringsAsFactors = FALSE)
+ })
我得到以下内容:
Error in read.table(x, header = TRUE, stringsAsFactors = FALSE) :
'file' must be a character string or connection
我也试过
myMergedData <- do.call(rbind,list.data)
我收到错误:
Error in rbind(deparse.level, ...) :
numbers of columns of arguments do not match
我确保所有的csv文件都有2列。
答案 0 :(得分:1)
列出读取的csv文件:
list.data <- Map(read.csv, list.files(pattern=".csv$"))
检查它们是否都有两列:
all(sapply(list.data, ncol)==2)
如果这不是TRUE
,那么请调查哪个文件包含多于或少于两列:
which(sapply(list.data, ncol)!=2)
否则按照评论中的建议进行组合:
do.call(rbind, list.data)