잦은 검색과 많은 포럼 읽기 후에이 답변을 찾거나 이해해야 했는데도 여전히 혼란 스럽습니다. 나는 두 개의 중첩 된 for 루프를 변수에 저장할 필요가 있지만 정확하게 할당 할 위치와 위치를 알지 못합니다. 코드가 원하는대로 기능합니다. 한 가지 형태로 출력을 얻는 방법을 찾지 못하는 것입니다. 루프로의 입력은 부분 행렬 목록입니다. 출력은 동일한 형식 일 수 있지만 루프에서 발생한 변경 사항을 포함하거나 더 이상적인 형식은 하나의 행렬에있는 모든 행과 열을 포함합니다. 나는 cbind를 수행하고 나중에 모든 것을 저장하는 루프 외부의 변수를 만들려고 시도했다. (아마도 내 주석 처리 된 시도를 알 수있을 것이다.) 그러나 내가 말한 것처럼, 나는 아직도 약간 혼란 스럽다. 어떤 도움이라도 대단히 감사하겠습니다!중첩 된 루프의 출력을 r에 저장
loop.List <- list()
#results.frame <- data.matrix()
ctr <- 0 # creating a counter and zeroing it
for (i in 1:length(subM.List)) { #Looping through each submatrix in the list
loop.List[[i]] <- list()
for (j in 2:nrow(subM.List[[i]])){ #Loop through each row of each submatrix in the list
if ((subM.List[[i]][j, "LAT"] == -180) & #Imputation 1, imputing data points with 0 activity intensity
(subM.List[[i]][j, "ACTIVITYIN"] == 0) &
!((subM.List[[i]][j-1, "ACTIVITYIN"] > 0))[1]) { #stop imputing at the first occurrence of a value > 0 in activity intensity
imputeLat <- replace(subM.List[[i]][ ,"LAT"], subM.List[[i]][j,"LAT"], subM.List[[i]][j-1,"LAT"])
imputeLon <- replace(subM.List[[i]][ ,"LON"], subM.List[[i]][j,"LON"], subM.List[[i]][j-1,"LON"])
replace.col <- replace(subM.List[[i]][ ,"Impute"], subM.List[[i]][j,"Impute"], 1) #populated impute column. If point is imputed will have a 1
allComb <- cbind(imputeLat, imputeLon, replace.col)
ctr <- (ctr + 1)
}
}
#result[[i]] <- allComb
#write.table(results.frame, "C:\\RWorkspace\\newMatrix.txt")
#return(results.frame)
}
편집 : 서브 매트릭스 목록 중 하나의 데이터 샘플은 행하게 다른 번호가 여러 서브 매트릭스가 포함되어 있습니다. 당신은 당신이 이러한 루프의 결과를 유지하려면 루프, 당신은 당신이 캡처하려는 출력 저장 변수의 일종을 작성해야합니다 당신의 범위를 외부 ctr
변수를 생성하는 방법을
FixTYPE ActivityIn LAT LON Impute
8 0 32.81320 -117.2300
8 0 32.81324 -117.2301
8 1 32.81327 -117.2302
8 1 32.81326 -117.2301
6 0 32.81324 -117.2300
6 0 32.81338 -117.2302
6 0 32.81353 -117.2299
7 0 -180.000 -180.000
7 0 -180.000 -180.000
7 0 -180.000 -180.000
7 0 -180.000 -180.000
7 1 -180.000 -180.000
7 2 -180.000 -180.000
7 1 -180.000 -180.000
1 0 32.81315 -117.2300
8 0 32.81318 -117.2300
아마도 이것은 모두'lapply'와'apply'로 할 수 있지만 데이터 (또는 최소한의 예)에 대한 접근이 없으면 특별히 도움이 되기는 어렵습니다. – alexwhan
하나를 취하는'foo' 함수를 작성하는 것이 좋습니다. 서브 매트릭스를 입력으로하여'allComb'을 출력합니다. 그런 다음'lapply (subM.List, foo)'또는'do.call (rbind, lapply (subM.List, foo))'를 실행하십시오. – flodel