一部の spatstat 関数でcrossing.psp
は、関数内でマークを割り当てることができません。ppp
オブジェクト内のマークを呼び出す for ループと lapply コマンドを使用して、複雑な関数を作成していpsp
ます。関数を使用するときに、これらのオブジェクトにマークを割り当てようとすると問題が発生しget()
ます。通常assign
、これらの場合に関数を使用しますが、機能させることができません。次に例を示します。
library(spatstat)
win <- owin(c(0,1), c(0,1))
p1 <- ppp(0.1, 0.3, window = win)
p2 <- ppp(0.2, 0.4, window = win)
p3 <- ppp(0.4, 0.7, window = win)
points <- c("p1", "p2", "p3")
パッケージに慣れていない人のために、marks
次のように動作します。
marks(p1) <- "p1"
私がやりたいことは(または、望ましい結果が得られる同様のことです):
for(i in length(points)){
marks(get(points[i])) <- points[i]}
もちろん、関数に代入演算子を使用しているため、これは機能しませんget
。assign
関数を試すと、エラーが発生します
for(i in 1:length(points)) assign(marks(get(points[i])), points[i])
#Error in assign(marks(get(points[i])), points[i]) :
# invalid first argument
# Or following also gives the same error:
for(i in 1:length(points)) assign(x = marks, value = points[i], envir = get(points[i]))
私も試しました:
setmarks(mget(points), points)
sapply(seq_along(points), function(i) marks(get(points[i])) <- points[i])
ループ内または適用コマンドを使用して、spatspat オブジェクトにマークを割り当てるにはどうすればよいですか?