2016-10-11 1 views
0

저는 ~ 250 Clark and Evans 테스트 (clarkevans.test)를 수동으로 실행하지 않도록 노력하고 있습니다.clark 및 evans 테스트를 위해 여러 개의 owin을 만드는 방법은 무엇입니까?

Excel 파일에 xmin, xmax, ymin, ymax 좌표 테이블이 있습니다. 각 행은 운영 창 크기입니다.

엑셀 파일 (read.csv)을 R로 읽은 후에는 "apply"와 "owin"의 어떤 형식이 결합되어 각 행에 대한 출력을 수행 할 수 없습니다. 결국 ppp를 만들고 비슷한 방식으로 clarkevans.test를 실행해야하지만, 지금은이 첫 단계에서 도움이 필요합니다.

coordin<-read.csv("Coordin.csv") 
cdf<-data.frame(coordin) 
> cdf 
     xmin xmax ymin ymax 
1 456741 456841 3913505 3913605 
2 453341 453441 3915805 3915905 
3 453441 453541 3915805 3915905 
4 452441 452541 3915705 3915805 
5 453741 453841 3915705 3915805 

몇 가지 변형을 시도했지만 아무 것도 작동하지 않습니다.

lapply(cdf, function(x) owin(xmin, xmax, ymin, ymax)) 
+0

당신은 당신이 지금까지 시도하고 데이터가 어떻게 구성되어 무엇의 몇 가지 예제 코드를 제공하는 경우가 쉬울 것이다. 나는 당신이 묘사 한 것에 기초하여 아래에 대답을하려고 노력할 것입니다. –

+0

내 질문에 답변 해 주셔서 감사합니다. 내 데이터와 코드를 추가했습니다. 내가 읽은 대부분의 것들이 그것을 사용하지 않기 때문에 나는 어떤 루프를 시도하지 않았다. 당신이 "적용"과 함께 준 예제를 시도했지만, 다시 말하면 오류가 발생했습니다. xrange, yrange 중 하나가 지정되면 둘 다 있어야합니다. – JZA

+0

나는 적용 할 방법이있다! 도와 주셔서 대단히 감사합니다. 감사드립니다. – JZA

답변

0

내가 쉽게 당신이 멀리 얻을 때 ppp 객체를 생성 에 단계를 추가 할 수 있습니다 이후 이것에 대한 루프를 위해 추천 할 것입니다 :

library(spatstat) 
# Test data: 
dat <- data.frame(xmin = 1:3, xmax = 2:4, ymin = 1:3, ymax = 2:4) 
# List of owin initialised as unit squares: 
win_list <- replicate(nrow(dat), owin(), simplify = FALSE) 
# For loop to make each owin: 
for(i in seq_len(nrow(dat))){ 
    # Vector of owin values: 
    v <- as.numeric(dat[i, ]) 
    # Finally create the owin object 
    win_list[[i]] <- owin(v[1:2], v[3:4]) 
} 

그런 다음 owin 개체의 목록을 정확하게 포함 당신이 기대하는 것 :

win_list 
#> [[1]] 
#> window: rectangle = [1, 2] x [1, 2] units 
#> 
#> [[2]] 
#> window: rectangle = [2, 3] x [2, 3] units 
#> 
#> [[3]] 
#> window: rectangle = [3, 4] x [3, 4] units 

당신이 적용을 주장한다면 :

apply(dat, 1, function(x) owin(c(x[1], x[2]), c(x[3], x[4]))) 
#> [[1]] 
#> window: rectangle = [1, 2] x [1, 2] units 
#> 
#> [[2]] 
#> window: rectangle = [2, 3] x [2, 3] units 
#> 
#> [[3]] 
#> window: rectangle = [3, 4] x [3, 4] units 
0

owin(xmin,xmax,ymin,ymax)owin를 호출 유효하지 않은 구문 때문에 원래의 코드가 작동하지 않았다.

하나의 유효한 구문은 owin(c(xmin,xmax), c(ymin,ymax))입니다.

다음은 그 열입니다 xmin,xmax,ymin,ymax 데이터 프레임 df에 작동합니다 :

apply(df, 1, function(z) owin(z[1:2], z[3:4]) 
관련 문제