2016-06-28 462 views
-1

我與MODIS 8天的數據時,我試圖一個MODIS產品的所有TXT文件導入R,而不是作爲一個單獨的data.frame,作爲單獨的txt文件。所以我可以在以後對它們應用相同的功能。主要目標是導出每個txt文件中的特定元素。我成功地排除從一個txt文件,用下面的命令所需的元素:導入多個txt文件爲R

# 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]) 

但我需要從所有txt文件的這些元素,老實說,我並不想手動運行它的871倍。所以我嘗試讀取所有的txt文件,然後將這個函數應用於它們。但不幸的是它不起作用。這裏是我的方法:

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]))} 

,這是我遇到的錯誤:

**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** 

附加信息:每個txt文件包括1200rows和1200columns和20-30的元素需要從表格中抽出。

我非常期待您的回答和欣賞任何幫助或這件事的建議。

+0

你肯定rastert_a2001361.txt'存在於指定的路徑文件'。 – Venky

+0

嗨 是的,它存在。它不是一個特定的txt文件的問題。如果我刪除這個文件夾,它會命名文件夾中的另一個txt文件。 – AbTnA

+0

看看格雷戈爾的[這篇文章]的答案(http://stackoverflow.com/questions/17499013/how-do-i-make-a-list-of-data-frames)的一些提示。 – lmo

回答

0

的問題是,list.files只返回文件夾中的文件名,而不是完整的文件路徑。如果你的工作方向不是"C:/Users/Documents/R/MODIS/txt/"你的代碼無法工作。更改您的代碼爲

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

現在它應該工作。

file.path結合您的路徑,並與正確的,OS具體,路徑分隔符的文件。