-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 で作業しています) - どのフラグメントが正しくありませんか?

より複雑なパターンも使用したいと思います (名前の最後に 2 つの数字を含むファイルのみをリストする) が、次のようなものを追加する: pattern="_??.asc"動作しないようです。

(my_asc 変数にディレクトリを手動で挿入する代わりに) フォルダーのリストを取得するためのループをもう 1 つ追加したいのですが、どうすればよいかわかりません。平均値、最大値、最小値、および標準偏差値のベクトルを作成する方法が機能しない理由がわかりません...

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 に答える