有没有一种方法可以基于for循环中匹配的文件名在r中创建列表?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有没有一种方法可以基于for循环中匹配的文件名在r中创建列表?相关的知识,希望对你有一定的参考价值。

((我对R很陌生,所以我一直在考虑用python术语解决问题,然后尝试对其进行翻译,但它一直没有起作用-不过,我需要R才能获得其栅格/ GIS功能)

我的目标是获取我从文件夹生成的文件名列表(以*** DTM.tif或*** DSM.tif结尾),遍历该列表,尝试遍历每个元素中的字符串,找到与DSM和DTM文件匹配的文件名,然后将文件附加到新列表中,从而分别对DSM文件和DTM文件进行排序。

    filenames

    ##### initialize lists
    dsmlst <- list_along()
    dtmlst <- list_along()

    ##### for loop
    for (i in seq_along(filenames)) {
      n = nchar(i)
      if substr(i, n-7, n) == "DSM.tif" {
        list.append(dsmlst, i)
      } else if substr(i, n-7, n) == "DTM.tif" {
        list.append(dtmlst, i)
      }
    }
    dsmlst
    dtmlst

这是我到目前为止所拥有的,并且我无法使其正常工作。有什么建议吗?

答案

这里,我们遍历序列,而不是文件名,因此我们需要提取该文件名

for (i in seq_along(filenames)) {
  filename <- filenames[i]
  n = nchar(filename)
  if substr(filename, n-7, n) == "DSM.tif" {
    list.append(dsmlst, filename)
  } else if substr(filename, n-7, n) == "DTM.tif" {
    list.append(dtmlst, filename)
  }
}

以上是关于有没有一种方法可以基于for循环中匹配的文件名在r中创建列表?的主要内容,如果未能解决你的问题,请参考以下文章

r值上基于范围的for循环

在 R 中使用 For 循环匹配负值和正值

R:使用 for 循环将因子的级别部分匹配到字符串? [复制]

Zcat for循环中的多个压缩文件

当匹配所有数字时,r for循环

关于基于硒中的for循环中的匹配条件执行一些动作