【问题标题】:List files with multiple conditions part2列出具有多个条件的文件第 2 部分
【发布时间】:2018-05-21 13:08:53
【问题描述】:

我有以下栅格并希望将它们导入 R。我的文件现在被称为:

B02_10m.jp2
B03_10m.jp2
B04_10m.jp2
B08_10m.jp2

B05_20m.jp2
B06_20m.jp2
B07_20m.jp2
B8A_20m.jp2
B11_20m.jp2
B12_20m.jp2

它们位于不同的子文件夹中。我就是这样使用recursive=TRUE

我尝试使用以下选项来组合条件,但它不起作用。

 S2 <- "my/path"
S2 <- list.files(S2, recursive = TRUE, full.names = TRUE, pattern =  "B0[2348]_10m.jp2$ | B(0[567]_20m)|(1[12]_20m)|(8A_20m).jp2$")

S2 <- "my/path"
S2 <- list.files(S2, recursive = TRUE, full.names = TRUE, pattern =  "B0[2348]_10m | B(0[567]_20m)|(1[12]_20m)|(8A_20m).jp2$")

【问题讨论】:

  • 试试B((0[2348]_10m)|(((0[567])|(1[12])|(8A))_20m)).jp2$
  • 再次感谢,仍在检查您的括号序列,但它正在工作!如果你把它作为答案,我会标记它:)
  • 看懂顺序后就可以写答案了
  • @docendodiscimus,是否可以定义一个变量 - 例如var&lt;-"B((0[2348]_10m)|((0[567])_20m)).jp2$" - 然后在 pattern 中使用它 - 例如, pattern=var。到目前为止,我已经尝试过,似乎不是
  • 是的,当然可以

标签: r search file-listing


【解决方案1】:

对于其他用户并基于@docendo discimus 回答,这里是在我的情况下列出文件时结合不同条件的想法。我的条件基于字母 B 后面的数字,所以:

pattern="B( here we need to write the conditions).jp2$

首先,我们将设置导入文件B02_10m、B03_10m、B04_10m、B08_10m的条件

patter="B(FIRST CONDITION OR SECOND CONDITION).jp2$
pattern="B((0[2348]_10m)|SECOND CONDITION).jp2$

其次,我们将导入文件 B05_20m、B06_20m、B07_20m、B8A_20m、B11_20m、B12_20m。在这种情况下,我们必须结合几个子条件,因为模式会从例如:02 变为 11、12 和 8A

首先我们编写 5、6 和 7 的代码

pattern="B((0[2348]_10m)|((0[567])_20m)).jp2$

然后我们添加波段 11 和 12 的代码

pattern="B((0[2348]_10m)|((0[567])|(1[12])_20m)).jp2$

然后,8A的代码

pattern="B((0[2348]_10m)|(((0[567])|(1[12])|(8A))_20m)).jp2$

希望清楚

【讨论】:

  • 我猜你不应该使用空格
  • 关键是,如果您在模式中指向一些空格以提高可读性,那么您正在更改实际模式,它们可能无法正常工作
猜你喜欢
  • 1970-01-01
  • 2013-08-04
  • 1970-01-01
  • 2016-10-20
  • 1970-01-01
  • 2018-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多