我正在尝试保存循环产生的不同对象。我正在使用raster
函数在不同目录中充电多个图像,循环生成了这些对象:
b :它将生成我存放图像的不同目录
[1]“ C:/ Users / franc / Documents / Fran / Tesis / Sin sincronizar / Imagenes Landsat / 1985 / Invierno / band3.tif”
[1]“ C:/ Users / franc / Documents / Fran / Tesis / Sin sincronizar / Imagenes Landsat / 1986 / Invierno / band3.tif”
[1]“ C:/ Users / franc / Documents / Fran / Tesis / Sin sincronizar / Imagenes Landsat / 2004 / Invierno / band3.tif”
名称:我要用于保存输出的其他名称
[1]“ 1985Banda3”
[1]“ 1986Banda3”
[1]“ 2004Banda3”
然后,我要使用目录 b 来给图像充电,并将每个图像保存在 name
的每个值中这是我的代码:
library(raster)
a<-c(1985,1986,2004)
i<-1
while(i<=(length(a)))
{
b<-paste("C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/",a[[i]],
"/Invierno/band3.tif", sep = '')
name<-(paste(a[[i]],"Banda3", sep =''))
name<- raster(b)
i<-i+1
}
我想继承这个
1985Banda3 <-raster(“ C:/ Users / franc / Documents / Fran / Tesis / Sin sincronizar / Imagenes Landsat / 1985 / Invierno / band3.tif“)
1986Banda3 <-raster(“ C:/ Users / franc / Documents / Fran / Tesis / Sin sincronizar / Imagenes Landsat / 1986 / Invierno / band3.tif“)
2004Banda3 <-raster(“ C:/ Users / franc / Documents / Fran / Tesis / Sin sincronizar / Imagenes Landsat / 2004 / Invierno / band3.tif“)
答案 0 :(得分:2)
如果您确实想要单独的变量,则可以使用assign
,它可以给您完整的调用权assign(name, raster(b))
。
但是,我怀疑对要使用相同方式处理的许多对象使用不同的变量是否真的有用(我假设您的真实数据有3个以上的项目)。因为在下一步中,您想对它们进行处理,然后再次需要这些名称...
以我的经验,使用(命名)列表要容易得多,您可以通过以下方式获得:
library(raster)
a<-c(1985,1986,2004)
Bandas <- lapply(a, function(name) {
b <- paste("C:/Users/franc/Documents/Fran/Tesis/Sin sincronizar/Imagenes Landsat/",name)
raster(b)
})
names(Bandas) <- paste("Banda3_", a, sep ='')
现在您有了一个名为Bandas的列表,其中包含3个命名元素。
访问例如在2004年版中,您可以使用Bandas$Banda3_2004
或name <- 'Bandar_2004'; Banda[['name']]
不仅您的工作区更整洁,而且更轻松地对对象执行操作:
ModifiedBandas <- lapply(Bandas, function(ban) {
_do something with an individual file_
})
for (ban in Bandas) {
print(ban)
}
由于文件中的内容,我对名称进行了一些更改
标识符由字母,数字,句点('。')和下划线组成。它们不能以数字或下划线开头,也不能以句号后跟数字开头。
您可以规避它(并且assign
与其他名称兼容),但这意味着您必须在名称周围使用反引号(“`”)来引用它。