내 문제의 코드를 작성하는 데 도움이되는 팁이 있습니까? 단계적으로 몇 가지 문제를 해결할 수는 있지만 작업 속도를 높이기 위해 루프 작성 및 자체 기능부터 시작하는 방법을 알지 못합니다. 아래, 당신은 내가 끝낼 수있는 작은 데이터 세트로 인한 나의 마지막 문제를 볼 수있다. 그러나 문제는 내가 더 큰 데이터 세트를 가지고있을 때이다 (30 개 이상의 "diff"컬럼을 생성해야 할 때). 수동 프로세스 속도 향상 코드 작성 방법
는 시간 내 주셔서 감사합니다 :)id=c(0, 0, 1, 0, 0, 1, 0, 0, 1, 0, 0)
distance=c(43.59304, 152.66197, 208.00968, 272.92662, 380.79429,
469.62269, 556.72725,734.29125, 796.42570, 873.09448, 1040.64550)
c=data.frame(id,distance)
c
c[paste("diff",1:3, sep="")]=NA
c$diff1=abs(c[c$id>0,][1,2]-c$distance)
c$diff2=abs(c[c$id>0,][2,2]-c$distance)
c$diff3=abs(c[c$id>0,][3,2]-c$distance)
c
c$min=apply(c[,c(3:5)], 1,FUN=min)
편집 :
은 기본적으로 내가 ID와 각 지점에 대한 최단 거리를 계산하려면 = 0 ID = 1로 가장 가까운 점. 데이터 "거리"는 각 점에 대한 선을 따른 거리입니다.
Picture for better understening
특정 문제를 설명해야하며, 디코드를 기대하지 말고, 변수'c'를 절대 사용하지 마십시오.) –
@Moody_Mudskipper 주석도 추가하십시오. 질문에 대한 답변을 제공하기 위해 [최소한의 재현 가능한 완전한 예제] (http://stackoverflow.com/help/mcve)를 제공하면 도움을 줄 수 있습니다. 우리가 일하고 질문에 대답 할 수있는 방법을 보여주기 위해 사용할 수있는 것이 있습니다. 나는 [좋은 질문을합니까?] (https://stackoverflow.com/help/how)를 살펴볼 것을 권장합니다. -묻다). –