A very simple R script adds a ascending row index to a textfile "0.txt" and also adds a header "time" to it. After that the data is written to a file "0-edit.txt"
data<-read.table("0.txt", header=TRUE,sep=",",row.names= NULL);
colnames(data)[1] = "time"
write.table(data,quote=FALSE,sep=", ","0-edit.txt");
Assume i have 4 files called 0.txt, 1.txt, 2.txt, ...in the same folder, how can I use a counter (or something else) to iterate over those file names in my script?
Here is a solution without a loop using lapply:
infiles <- dir(pattern='\\.txt$')
change.files <- function(file){
data <- read.table(file, header=TRUE, sep=",", row.names=NULL)
colnames(data)[1] = "time"
write.table(data, quote=FALSE, sep=", ", sub("\\.txt$","-edit.txt", file))
}
lapply(infiles , change.files)
For me the real advantage of this approach is that you can easily run it in parallel using mclapply
(from multicore package) instead of lapply. Or parLapply
from snow. Also to me it looks nicer.
for(i in 0:3) {
infile <- paste(i,".txt",sep="")
outfile <- paste(i,"-edit.txt",sep="")
data <- read.table(infile,header=TRUE,sep=",",row.names=NULL)
colnames(data)[1] = "time"
write.table(data,quote=FALSE,sep=", ",outfile)
}
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With