取消列出多个csv文件

时间:2017-05-08 22:30:25

标签: r csv

如何取消列出和修改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列。

1 个答案:

答案 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)