我有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?
自动完成答案 0 :(得分:2)
我认为您可以使用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)
}
希望得到这个帮助。
答案 1 :(得分:1)
装载:
使用&gt;创建一个名称最容易完成的列表list.files( )
使用带有no sep的read.table循环遍历该列表 参数或sep =“\ t”(现在该文件中没有逗号或标题。)
也许: lapply(flist,function(x)assign(x,read.table(x)) ......并将这些结合起来,也许就像这样 bigfile&lt; - do.call(rbind,flist)
rhelp档案中有很多例子,而且这样做有很多例子;
With R, loop over data frames, and assign appropriate names to objects created in the loop
How to read.table() multiple files into a single table in R?
提取(R中没有零行):
subextract <- bigfile[ seq(1, 9001 , by=100), ]
write.csv(subextract, file="smaller.csv") # will have commas