2017-09-10 15 views
1

여러 맵 (내 데이터 세트의 각 종에 하나씩)을 만들고 싶지만, 어떻게 든 찾고있는 것을 얻을 수 없습니다.올바른 점()은 for 루프를 사용하는 배수 맵에서 사용합니다.

지도에 모든 종 레코드를 플로팅하고 싶지만 각 맵마다 하나의 점이있는 맵을 만듭니다 ... 내 스크립트의 문제점을 이해할 수 없습니다. 당신이 나를 도울 수? 고맙습니다!

elevation <- getData("alt", country = "ES", mask=F) 
slope <- terrain(elevation, opt = "slope",neighbors=4) 
aspect <- terrain(elevation, opt = "aspect",neighbors=4) 
hill <- hillShade(slope, aspect, 40, 270) 
newextent<-extent(-7.99, -2.87, 39.9, 41.5) 
land.pal <- colorRampPalette(c("#336600", "#F3CA89", "#D9A627", 
           "#A49019", "#9F7B0D", "#996600", "#B27676", "#C2B0B0", "#E5E5E5", 
           "#FFFFFF"), space="Lab") (1000) 


for (i in seq_along(data$Species)) { 
    pdf(file=paste0("map ", data$Species[[i]],".pdf"), onefile=F) 
    plot(disaggregate(crop(elevation,newextent), 1, method="bilinear"), col = land.pal, legend=F) 
    points(data$Lat[[i]],data$Long[[i]], col="black") ##The error must be here, but I cannot fix it 
    dev.off() 
} 

은 사전에 감사 데이터

: 현재

Lat Long Species 
-6.99 40.49 Sp1 
-5.05 40.60 Sp1 
-3.30 40.02 Sp1 
-7.51 40.86 Sp1 
-3.18 40.24 Sp1 
-3.83 40.08 Sp1 
-7.28 40.91 Sp1 
-7.74 40.53 Sp1 
-7.72 40.69 Sp1 
-4.36 40.06 Sp1 
-5.90 40.51 Sp2 
-5.56 40.07 Sp2 
-3.52 40.19 Sp3 
-6.29 40.93 Sp3 
-6.77 40.12 Sp3 
-7.11 40.77 Sp4 
-5.81 40.88 Sp4 
-5.27 40.68 Sp4 
-6.31 40.34 Sp4 
-6.13 40.32 Sp4 
-6.73 40.99 Sp4 
-5.32 40.71 Sp4 
-6.17 40.97 Sp4 
-4.77 40.92 Sp4 
-6.45 40.58 Sp5 
-5.54 40.39 Sp5 
-6.56 40.66 Sp5 
-5.27 40.37 Sp5 
+1

이 데이터없이 답변을 아마 불가능하다. 충분히 재현 가능하게 만드십시오. ('dput'을 사용하십시오.) –

+0

안녕하십니까, 신속한 답장을 보내 주셔서 감사합니다. 지금 찾기 게시물을 편집 –

답변

0

, 당신은 전체 그룹과 같은 모든 단일 사용자의 컬럼의 값이 아닌 을 반복된다 한 점을 위도로길이가이므로 1 행이 01로 전달됩니다.루프.

따라서, 반복적으로 함수에 모든 슬라이스 데이터 프레임을 전달 배율이 종하여 데이터 프레임을 슬라이스 by을 고려하십시오. 아니 아래와하지만 by 여기 되는 요소 (들)의 그룹에 동일한 개체의 이름 목록을 반환 할 수 있습니다

by(data, data$Species, FUN = function(df) { 
    pdf(file=paste0("map ", df$Species[[1]],".pdf"), onefile=FALSE) 
    plot(disaggregate(crop(elevation,newextent), 1, method="bilinear"), col = land.pal, legend=FALSE) 
    points(df$Lat, df$Long, col="black") 
    dev.off() 
}) 
+0

감사합니다! 그것은 절대적으로 효과가 있었다! –

+0

굉장! 도와 줘서 기뻐. 'by '는 자주 사용되지 않지만 매우 유용한 기본 R 함수입니다. – Parfait