0
고정 된 선에 대해 거리에 따라 값을 할당하는 함수에서 im 객체를 만들고 싶습니다. 즉, 해당 점이 떨어져있는 경우입니다. 그 값은 0에 가깝고 이것이 라인에 가깝다면 반대 값입니다. 나는 다음과 같은 기능을 만들었습니다 :이 오류가R : 내 모델의 공변량이 될 함수에서 im 객체 생성
imagen <- as.im(covValue, W = W)
:
library(spatstat)
W <- owin(xrange = c(-0.5, 4.5), yrange = c(-0.5, 3.5))
covValue <- function(x, y) {
# defining the segment AB
b <- W$yrange[2] + 2
A <- c(W$xrange[1], b)
I <- c(W$xrange[2], W$yrange[2])
m <- (I[2] - A[2])/(I[1] - A[1])
B <- c((W$yrange[1] - b)/m, 0)
C <- c(x, y)
C <- c(4.5, 3.5)
x1 <- A[1]
y1 <- A[2]
x2 <- B[1]
y2 <- B[2]
x3 <- C[1]
y3 <- C[2]
# calculating the orthogonal point D that belongs to the segment AB with respect to a given point C = (x,y) inside the observation window
px <- x2 - x1
py <- y2 - y1
dAB <- px * px + py * py
u <- ((x3 - x1) * px + (y3 - y1) * py)/dAB
xr <- x1 + u * px
yr <- y1 + u * py
D <- c(xr, yr)
# t<-((C[1]-A[1])*(B[1]-A[1])+(C[2]-A[2])*(B[2]-A[2]))/((B[1]-A[1])^2+(B[2]-A[2])^2)
# Dx=A[1]+t*(B[1]-A[1])
# Dy=A[2]+t*(B[2]-A[2])
# if the point C is away from the segment AB, this has less value
dist <- sqrt((C[1] - D[1])^2 + (C[2] - D[2])^2)
value <- 1/exp(dist)
return(value)
}
기능이 잘 작동을, 지금은 메신저 개체를 만들려고
Error: length(mat) == length(xcol) * length(yrow) is not TRUE
수있는 사람하시기 바랍니다 도와 줘, 고마워.
이 패키지에 익숙하지 않지만 다음과 같은 것을 시도해보십시오 :'imagen <- as.im (covValue (1, 1), W = W)'. – jsb
또한, 함수 인자'x'와'y'가 어디에 사용되는지 알 수 없습니다 ... – jsb
@ Samuel : 저는이 예제를 spatstat 패키지의 책에서 템플릿으로 사용하고 있습니다 : f <- function (x, y (f, W = 정사각형 (6)) {15 * (cos (sqrt (x-3)^2 + 3 * (y-3)^2)))^2}> A <- as.im – LFRC