2011-05-05 5 views
-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에서 작동 중입니다) - 어느 부분이 잘못 되었습니까?루프에 문제가 있습니다

더 복잡한 패턴 (이름 끝에 두 개의 숫자가 들어있는 파일 만 나열)을 사용하고 싶습니다. 그러나 다음과 같이 추가하십시오. pattern="_??.asc"이 작동하지 않는 것 같습니다.

나는 하나의 루프를 추가하여 (my_asc 변수에 수동으로 디렉토리를 삽입하는 대신) 폴더 목록을 얻고 싶지만 아이디어를 얻지 못했습니까? 평균, 최대, 최소 및 표준 편차 값에 대한 벡터를 만드는 내 방식이 작동하지 않는 이유는 무엇입니까 ...

+0

단지 하나 개의 파일을, 당신은에있는 동안 그것은 세 가지 질문을 분할, 전체 루프없이 실행 디버깅하려고 – mdsumner

+0

넣어'브라우저를()'와 첫 번째 루프 라인으로 루프를 실행합니다. 당신은 이제 루프의 "내부"에 있으며, 생성 된 모든 변수를보고 변경하고 검사를 실행하고 테스트 할 수 있습니다. –

+0

이 루프에는 많은 것들이 있습니다. 정확히 ** 작동하지 않는 것은 무엇입니까? 너는 오류가있다 - 그것이 무엇을 말하는가? 결과는 당신이 기대하지 않습니다 - 그래서 당신은 무엇을 기대합니까? 질문을 수정하여 더 많은 정보를 추가 할 수 있습니다. 현재 -1. – Marek

답변

2

시작 위치. . .

평균, 최대 및 최소 각각에 대해 na.rm = TRUE를 지정하고 sd에 대해 TRUE를 올바르게 입력해야합니다.

hist (z)는 png (파일 이름, ...) 다음에 와야하며 그 뒤에 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() 
} 
+0

OP의 코드 중 일부를 수정하기 시작한 다음 이미 수행해야 할 작업을 단어로 설명 했으므로 새로운 대답을 작성하는 대신 답변에 코드를 추가했습니다. – Andrie

+0

멋지다, 고마워. - 나는 rgdal 패키지의 데이터를 모아서 전체 예제를 만들었지 만, 파일 이름 부분의 숫자에 대한 정규식을 알지 못했고 아직 그것을 보지 못했다. – mdsumner

+0

내가 참여할 것이다. 당신의 대답의 편집자 :) 나는 추가 결과 정보에 근거하여 초기화 결과 벡터 원인을 추가한다. – Marek

관련 문제