Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/loops/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
分类光栅图像在R中提取信息循环_R_Loops_For Loop_Classification_R Raster - Fatal编程技术网

分类光栅图像在R中提取信息循环

分类光栅图像在R中提取信息循环,r,loops,for-loop,classification,r-raster,R,Loops,For Loop,Classification,R Raster,我有800个分类光栅图像(7类)和每一个从一个图像类需要以平方米计算。到目前为止,它只适用于一个图像,而不适用于循环。我能做些什么来解决它 report_files<-list(list of 800 tif files) for( i in report_files){ reportfiles_single<-raster(report_files[i]) df<-as.data.frame(table(reportfiles_single)) df2&l

我有800个分类光栅图像(7类)和每一个从一个图像类需要以平方米计算。到目前为止,它只适用于一个图像,而不适用于循环。我能做些什么来解决它

report_files<-list(list of 800 tif files)
    for( i in report_files){
  reportfiles_single<-raster(report_files[i])
  df<-as.data.frame(table(reportfiles_single))
  df2<-as.data.frame(df$Freq*(0.070218*0.070218))
  {report_mean<- df2}
}

报告文件您的循环不正确。您确实为(报表文件中的i)使用了
{
,但后来您使用了
i
,就好像您为(报表文件中的i:length)使用了
{

在循环中,您可以使用
table(reportfiles\u single)
,而在工作代码示例中,等效的是
table(values(reportfiles\u single))

此外,在每次迭代中覆盖
report\u mean
时,您不会保留任何结果

所以你应该从学习循环的工作原理开始,首先做一些简单的例子

另外,您确定数据的空间分辨率约为7×7厘米吗?这是可能的,但似乎不太可能

下面是一个您可能会做的示例。我使用
freq
方法,因为它是内存安全的,不像
table(values())

库(光栅)

f您能否提供一个可能包含3幅图像的可复制示例,并向我们提供您的数据?如果我们可以尝试在我们的机器上运行,则更容易探索问题。谢谢:)
a<-raster("test060707.tif")
val<-values(a)
table_val<-data.frame(val)
df<-as.data.frame(table(table_val))
df2<-as.data.frame(df$Freq*(0.070218*0.070218))
library(raster)
f <- system.file("external/test.grd", package="raster")
report_files <- c(f, f, f)

res <- list()
for( i in 1:length(report_files)){
    r <- raster(report_files[i])
    # note the -2 for this example, you probably do not want that with your data
    f <- freq(r, digits= -2)
    cellsize <- prod(res(r))
    f[,2] <- f[,2] * cellsize
    res[[i]] <- f
}
s <- stack(report_files)
x <- freq(s, digits=-2)