首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有一种方法可以基于for循环中匹配的文件名在r中创建列表?

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

Stack Overflow用户
提问于 2020-05-01 01:38:31
回答 1查看 28关注 0票数 1

(我对R非常陌生,所以我一直在考虑用python术语解决问题,然后尝试翻译它,但它一直不起作用--我需要R,因为它具有栅格/GIS功能)

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

代码语言:javascript
复制
    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

到目前为止,这就是我的全部,我还没能让它工作。有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-05-01 01:41:00

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

代码语言:javascript
复制
 dsmlst <- list_along(seq_along(filenames))
 dtmlst <- list_along(seq_along(filenames))

for (i in seq_along(filenames)) {
  filename <- filenames[i]
  n = nchar(filename)
  if(substr(filename, n-7, n) == "DSM.tif") {
    dsmlist[[i]] <- filename
  } else if(substr(filename, n-7, n) == "DTM.tif") {
    dtmlst[[i]] <- filename
  }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61529480

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档