R读取文本文件将特定列写入新文本文件

时间:2014-02-23 16:46:59

标签: r loops

我需要读取包含3列的文件“001.txt”,并导出一个新名称“new001C2.txt”的文件,该文件只包含第二列。我可以一次做一个文件这样的事情,但我刚刚开始,并且无法找到一个自动的方法来为目录中的所有文件执行此操作。

2 个答案:

答案 0 :(得分:1)

可以使用lapply完成此操作。首先,列出所有文件名。然后使用lapply全部阅读。这会将每个文件放入一个列表中,因此“001.txt”将成为列表的第一个成员,并且可以使用readAll[[1]]进行访问。 newFiles创建新文件列表,使数字与原始文件名保持一致。然后我们再次使用lapply将每个文件写入单独的文件。

files <- c("001.txt", "002.txt", "003.txt")

readAll <- lapply(files, read.csv) 

col2 <- lapply(readAll, function(x) x[,2])

newFiles <- paste0("new", gsub(".txt", "", files), "C2.txt")

lapply(1:length(col2), function(i) write(col2[[i]], newFiles[i]))

答案 1 :(得分:0)

如果您使用的是基于Linux的系统,这里有一个更简单的解决方案,您可以直接从shell运行:

cut -f 2 001.txt > new001C2.txt