-2
library(rgdal) 
my_asc = dir("~/Pulpit/dods/karol/TVDI113_121",
             pattern=".asc", recursive=TRUE, full.names=TRUE)
for (i in 1:length(my_asc)) {
    r <- readGDAL(my_asc[i])
    z <- as.matrix(r)
    vectordata[i] <- mean(z) 
    vectordatamax[i] <- max(z) 
    vectordatamin[i] <- min(z) 
    vectordev[i] <- sd(z, na.rm=TRUE) 
    hist(z)
    png(filename="hist"+tostring(i)+".png")
}

我尝试对这个循环进行一些修改,但它仍然不起作用(我在 Rstudio 下工作) - 哪个片段不正确?

我还想使用更复杂的模式(仅列出末尾包含两个数字的文件),但添加类似: pattern="_??.asc"似乎不起作用。

我想再添加一个循环来获取文件夹列表(而不是手动将目录插入 my_asc 变量),但我不知道该怎么做?我不知道,为什么我为平均值、最大值、最小值和标准差值创建向量的方法不起作用......

4

1 回答 1

2

从哪儿开始 。. .

您可能希望每个平均值、最大值和最小值的 na.rm = TRUE,并且您需要为 sd 正确输入 TRUE。

hist(z) 应该在 png(filename, ...) 之后,并且必须跟在 dev.off() 之后(至少)。

您不能在 R 中将带有“+”的字符串粘贴在一起,请使用 paste()。

vectordata <- vectordatamax <- vectordatamin <- vectordev <- numeric(length(my_asc))
for (i in seq_along(my_asc)) {
  r <- readGDAL(my_asc[i])
  ## as.matrix is not necessary, as the band values are accessible directly
  ##z <- as.matrix(r)
  z <- r[[1]]
  vectordata[i] <- mean(z, na.rm=TRUE) 
  vectordatamax[i] <- max(z) 
  vectordatamin[i] <- min(z) 
  vectordev[i] <- sd(z, na.rm=TRUE) 
  png(filename=paste("hist", i, ".png", sep=""))
  hist(z)
  dev.off()
}
于 2011-05-05T04:10:54.510 回答