重命名对象列表中的R错误

时间:2017-06-08 12:19:47

标签: r batch-rename r-raster

我正在使用R 3.4.0。

我有多个单波段栅格,聚集在一个文件夹中,我希望在多波段光栅中叠加在一起。按照其他帖子的说明,我写了这些简单的行:

<test>
    <a>
        <a1>
            <text />
        </a1>
        <a2 />
    </a>
    <b>
        <b1 />
        <b2 />
    </b>
</test>

此程序给了我以下错误:

  

.local(.Object,...)中的错误:
      .rasterObjectFromFile中的错误(x,band = band,objecttype =&#34; RasterLayer&#34;,:       无法从此文件创建RasterLayer对象。 (文件不存在)

我读了其他相同问题但没有明确解决方案的帖子;其中一个选择是重命名列表的文件,我试图用以下脚本做:

s2_list <- list.files(path="C:/Users/LAURA/Documents/S2", pattern=".tif$")
s2_stack <- stack(s2_list)

输出如下:

s2_list <- list.files(path="C:/Users/LAURA/Documents/S2", pattern=".tif$")
names_list <- paste("ndvi_", 1:104)
file.rename(s2_list, names_list)
s2_stack <- stack(s2_list)

任何人都知道为什么会这样?我已经检查了第一个列表中的对象数量,它是104。

s2_list的样本:

file.rename(s2_list, names_list)

[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[20] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[39] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[58] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[77] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
[96] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

1 个答案:

答案 0 :(得分:0)

更安全的方法是避免&#34;硬编码&#34; (&lt; - 邪恶之根)

    targetDir<-file.path("path","where","your","files","reside")
    s2_list <-list.files(path=targetDir,pattern=".tif$",full.names = T) 
    names_list <- paste0(targetDir,"/ndvi_", 1:length(s2_list),".tif")
    file.rename(s2_list, names_list)