删除list.file

时间:2016-02-10 19:29:45

标签: r

我正在调整另一个用户here编写的函数,其中可以批量裁剪一系列光栅文件。该函数最初是为.asc文件编写的,但是我打算将它用于.tif文件,这些文件是使用pyModis(python包;不是超级相关的)集体生成的。

目前,原始filenames功能下的list.file()为:

 [1] "./FILE_mosaik_DOY.tif"      "./FILE_mosaik_DOY.tif.xml" 
 [3] "./FILE_mosaik_EVI.tif"      "./FILE_mosaik_EVI.tif.xml" 
 [5] "./FILE_mosaik_NDVI.tif"     "./FILE_mosaik_NDVI.tif.xml"
 [7] "./FILE_mosaik.tif"          "./FILE_mosaik.tif.xml"     
 [9] "./FILE_mosaikb.tif"         "./FILE_mosaikb.tif.xml"    
 [11] "./ReferenceRaster.tif"

我希望它是:

 [1] "./FILE_mosaik_DOY.tif"      "./FILE_mosaik_EVI.tif" 
 [3] "./FILE_mosaik_NDVI.tif"     "./FILE_mosaik.tif"
 [5] "./FILE_mosaikb.tif"         "./ReferenceRaster.tif"      

原始代码使用以下行来定义将在批处理中裁剪的文件:

  filenames <- list.files(pattern="*.asc", full.names=TRUE)   #Extract list of  file names from working directory

但是因为我想使用tif文件,我使用下面的行。

  filenames <- list.files(pattern="*.tif", full.names=T)   #Extract list of  file names from working directory

除了:我的工作目录中还有.xml文件,其中包含.tif扩展名。因此,filenames包含"./FILE_mosaik_EVI.tif.xml"等文件。我想只在filenames中包含tif文件。

我试过两种方法删除.xml文件。首先,我尝试使用rm(),但是因为filenames是一个字符而不是一个列表(至少我认为这就是原因)事情没有成功,我最终得到了一个{ {1}} NULL个对象。

filenames

我还尝试在原始参数

中指定我不想要.xml文件
  filenames <- list.files(pattern="*.tif", full.names=T)   #Extract list of  file names from working directory
  filenames <- rm(pattern="*.xml", list=filenames) #Remove the .xml files automatically produced in pyModis

但这也不起作用。遗憾的是,stackoverflow上的许多现有问题都处理 filenames <- list.files(pattern="*.tif" && !="*.txt", full.names=T) #Extract list of file names from working directory 无法找到足够的文件,而不是太多......

如何实现仅包含 .tif文件的list.files()对象?

1 个答案:

答案 0 :(得分:4)

您可以使用$符号指定字符串的结尾:

filenames <- list.files(pattern="\\.tif$", full.names=T)