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