ラスタと行列を必要とする関数を作成しました。行列のすべての行は、ラスタ内のセルの座標を保持します。forループを関数内のRで適用すると置換する
library(raster)
library(gdistance)
r <- raster(nrow=100,ncol=15)
r[] <- 1:ncell(r)
plot(r)
pts <- matrix(c(-144,72.9,-168,45.9,-144,13.5),ncol=2,nrow=3,byrow=TRUE)
get_cells <- function(raster,points_matrix) {
Cells <- c()
for (i in 1:nrow(points_matrix))
{
Cells[i] <- cellFromXY(raster,c(points_matrix[i,]))
}
return(Cells)
}
は今、私はapply()
で使用できるように、私の機能を再構築したいと思います:私の機能を終えた後、それの座標を経て、私の行列に保存されているすべてのセルの数を含むベクターを返します。 だから最後に私のようなものを入力することができるようにしたい:
apply(pts,1,get_cells)
をして同じ結果を得るが、私はそれを行う方法を見つけ出すことはできません。 どんな種類のヘルプがあれば幸いです。
どこで 'points_matrix'を定義しましたか? – Koundy
私は作成した関数のパラメータであり、関数を呼び出すときに 'pts' -matrixを代入する必要があります。したがって、fuctionを実行するには、 'get_cells(r、pts)'とタイプする必要があります。 – snoops