목록의 각 요소에 함수를 적용하는 것에 대한 질문이 있습니다. 여기 목록의 각 요소에 대해 별도로 함수 적용
내 문제입니다 : 내가 DF의 목록을 가지고(나는 일에 의해 더 큰 DF 분할) :이 동일하다면
mydf <- data.frame(x=c(1:5), y=c(21:25),z=rnorm(1:5))
mylist <- rep(list(mydf),5)
names(mylist) <-c("2006-01-01","2006-01-02","2006-01-03","2006-01-04","2006-01-05")
이 가짜 데이터에 대한 상관 없어), 그것은 단지 예를 들어. 목록의 각 DF에 대한 열 "z"와 일부 공간 좌표를 나타내는 "x"및 "y"2 개의 다른 열을 결과로 나타냅니다.
내가 서로 독립적 DF 어떤 특정 지역을 나타내는도 "X"및 "Y"의리스트를 포함하는이 (10 개 영역 상상)
최종 목표는 각각 10 개 영역에 대해 갖는 것이다region <- data.frame(x=c(1:10),y=c(21:30),region=c(1:10))
, 내 목록의 각 DF의 가장 가까운 지점 (좌표에 따라)에서 값 "z"(내 결과 중). 하나 개의 영역 수단 10 결과 DF2 행 내에서, 다음 (10) 다른 결과 "Z"의 DF1에서 "Z"는 ... 내 최종 DF 가능한 경우 (구조에 대해) 다음과 같이 표시한다 :
final1 <- data.frame("2006-01-01"=rnorm(1:10),"2006-02-01"=rnorm(1:10),
"2006-03-01"=rnorm(1:10),"2006-04-01"=rnorm(1:10),"2006-05-01"=rnorm(1:10))
1 일의 열 (목록의 한 DF)과 각 행에 대해 하나의 값 (예 : 2006-01-01의 경우 : 첫 번째 영역과 가장 가까운 지점의 값 "z"). 내가 원하는 것을 가지고 루프를 만들기 위해 노력하고, 그런 다음
min.dist <- function(p, coord){
which.min(colSums((t(coord) - p)^2))
}
을,하지만 난 목록 어려움이 있습니다
은 이미 가장 가까운 값을 찾기 위해 작은 기능을 가지고있다. 루프에 2 개의 변수를 넣어야하지만 작동하지 않습니다.
이 난 그냥 내 목록의 1 DF를 가지고가는 경우에 약 작동합니다
for (j in 1:nrow(region)){
imin <- min.dist(c(region[j,1],region[j,2]),mylist[[1]][,1:2])
imin[j] <- min.dist(c(region[j,1],region[j,2]),mylist[[1]][,1:2])
final <- mylist[[1]][imin[j], "z"]
final[j] <- mylist[[1]][imin[j], "z"]
final <- as.data.frame(final)
}
을하지만 위해 내가 개체의 목록의 각 DF에 대한 결과 중 하나가 열이 내 전체 목록을 (선택하는 경우 " 최종 "), 나는 오류가 있습니다.
첫 번째 문제는 "regions"의 길이가 내 목록의 길이와 다르다는 것이고 두 번째 것은 내 목록의 길이에 두 번째 변수를 추가하는 것입니다. 루프에 익숙하지 않아 2 변수 루프가 있습니다.
내가 찾고있는 것을 바꾸려면 무엇을 변경해야하는지 루프에서 변경할 수 있도록 도와 주시겠습니까?
대단히 감사합니다!
'plante'와 'region'이 정의되지 않았습니다. 제발, 작동 예제를 만듭니다. – Pop
지역은 내 게시물의 시작 부분에 정의됩니다. 심는 경우 실수예요. 나는 그것을 루프에서 바꿨다. 이 루프는 내 문제가이 루프에 있기 때문에 실제로 복제 할 수 없습니다. 그것은 내가하려고하는 것을 보여주기위한 것입니다.어쩌면 거기에 가장 쉬운 방법이있을 수 있습니다. 또는이 루프를 개선해야하지만 R 지식으로는 할 수 없습니다. – jeff6868