我有 500 个文件(保存在同一目录中)。
所有这些文件都具有相同的格式,如下所示。虽然 excel 可以识别它们有 3 列,但如果我使用 x <- read.csv(xxx.txt, header=T)
,R 只会读取一列。 。我想有一种更聪明的方法可以做到这一点。
4077 40770 3.083
4078 40780 2.985
4079 40790 2.946
4080 40800 3.010
4081 40810 2.956
4082 40820 3.080
4083 40830 3.130
4084 40840 3.167
4085 40850 3.054
将所有这些文件加载到 R 后,我只想提取第 0、第 100、第 200、第 300、....第 9000 行,并将它们保存在另一个目录中,并在 500 个单独的文件中具有相同的文件名。
是否可以用R自动完成?
最佳答案
我认为您可以使用 read.table() 函数来导入自由格式化(分隔)数据文件而不是专门为逗号分隔文件编写的 rad.csv() 来改进代码。正如 DWin 指出的那样,R 中没有第 0 行。您可以尝试以下方法:
directory <- "your.work.directoty" # where your data files are.
# It depends on your OS (Windows, Linux, MacOS)
ndirectory <- "your.new.directory"
files <- dir(directory)
files.to.read <- paste(directory, files, sep="/")
files.to.write <- paste(ndirectory, files, sep="/")
for(i in 1:length(files.to.read) )
{
d <- read.table(files.to.read[i], header=TRUE)
temp <- d[c(1,seq(100, 9000, by=100)), ]
write.table(temp, file=files.to.write[i],
row.names=FALSE)
}
希望这有帮助。
关于r - 将 txt 文件转换为 csv 并提取选定的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7421923/