2013-03-12 75 views
0

我有一个.csv文件的列表,我需要删除它们的前三行。有没有办法一次完成它们?批处理和合并在r

到名为“测试”文件个别地做的代码是: 测试< -test [-C(1:3),]

我想要运行的文件的列表中的上面的行我已导入使用: 文件名< - list.files(path = getwd())

处理上述文件后,我想通过使用cbind创建单个文件。非常感谢您的帮助。

回答

1
csvlist <- lapply(csvnames, function(nam) read.csv(file=nam)) 
do.call(cbind, lapply(csvlist, "[", -c(1:3))) 

你的问题意味着你有一个成功的输入策略,但你现在报告错误,所以你应该更好地描述你的文件。它威力工作更好地排除前三行:

csvlist <- lapply(csvnames, function(nam) read.csv(file=nam, header=FALSE, skip=3)) 
do.call(cbind, csvlist) # no longer need to remove since skip=3 did that. 

你确定你不想rbind而不是cbind

+0

非常感谢您的快速回复@Dwin。它给第二条语句的错误消息: data.frame中的错误(...,check.names = FALSE):参数意味着不同的行数: – Bhante 2013-03-12 00:48:50

+0

@Bhante我认为错误说你的文件有不同的行数。因此在做cbind时出错 – 2013-03-12 01:01:28

+0

你说得对。它可以混合不同的行数吗?我尝试了不同行数的另一个数据;它的工作原理没有错误;数据在具有较少行数的列中被复制。但它在这个不起作用。 – Bhante 2013-03-12 01:24:29

2

你可以试试看看它是否有效。

result <- do.call(cbind, lapply(list.files(path = getwd()), function(n) read.csv(file=n , skip = 3))) 
+0

不是。我收到相同的错误消息。我忘了提及,我不得不在read.csv中添加header = FALSE,因为前3行是句子,第四行是标题。这就是为什么我需要删除前三行。 – Bhante 2013-03-12 00:58:37