-1

I am working with MODIS 8-day data and am trying to import all the txt files of one MODIS product into the R, but not as one single data.frame, as individual txt files. So I can later apply same functions on them. The main objective is to export specific elements within each txt file. I was successful in excluding the desired elements from one txt file with the following command:

# selecting the element within the table
idxs <- gsub("\\]",")", gsub("\\[", "c(",  "[24,175], [47,977], [159,520], [163,530]
                             ,[165,721], [168,56], [217,820],[243,397],[252,991],[284,277],[292,673]
                             ,[322,775], [369,832], [396,872], [434,986],[521,563],[522,717],[604,554]
                             ,[608,50],[614,69],[752,213],[780,535],[786,898],[788,1008],[853,1159],[1014,785],[1078,1070]") )

lst <- rbind( c(24,175), c(47,977), c(159,520), c(163,530) ,c(165,721), c(168,56), c(217,820),c(243,397),c(252,991),c(284,277),c(292,673),c(322,775), c(369,832), c(396,872), c(434,986),c(521,563),c(522,717),c(604,554),c(608,50),c(614,69),c(752,213),c(780,535),c(786,898),c(788,1008),c(853,1159),c(1014,785),c(1078,1070))

mat <-  matrix(scan("lst.txt",skip = 6),nrow=1200)

Clist <- as.data.frame(mat[lst])

But I need these element from all of the txt files and honestly I do not want to run it manually for 871 times. So I try to read all the txt files and then apply this function to them. but unfortunately it does not work. here is my approach:

folder <- "C:/Users/Documents/R/MODIS/txt/"      
txt_files <- list.files(path=folder, pattern=".txt")

df= c(rep(data.frame(), length(txt_files)))

for(i in 1:length(txt_files)) {df[[i]]<- as.list(read.table(txt_files[i]))}

and this is the error I encounter:

**Error in file(file, "rt") : cannot open the connection
In addition: Warning message:
  In file(file, "rt") :
  cannot open file 'rastert_a2001361.txt': No such file or directory**

additional information: each txt file includes 1200rows and 1200columns and 20-30 elements need to be extracted from the table.

I am very much looking forward for your answers and appreciate any helps or recommendations with this matter.

Tung
  • 26,371
  • 7
  • 91
  • 115
AbTnA
  • 3
  • 3
  • are you sure the file `rastert_a2001361.txt` exists in the path specified. – Venkata Dorisala Jun 28 '16 at 08:33
  • Hi yes, it exists. it is not a matter of a specific txt file. if I remove this one, it will name another txt file within the folder. – AbTnA Jun 28 '16 at 08:55
  • Take a look at gregor's answer on [this post](http://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames) for some tips. – lmo Jun 28 '16 at 12:13

1 Answers1

0

The issue is that list.files returns only the file name within the folder, not the full path to the file. If you working direction is not "C:/Users/Documents/R/MODIS/txt/" your code could not work. Change your code to

for(i in 1:length(txt_files)) {df[[i]]<- as.list(read.table(file.path(folder, txt_files[i])))}  

Now it should be working.

file.path combines your path and your file with correct, OS specific, path seperator.

FlorianSchunke
  • 571
  • 5
  • 15