0
이것이 어려운 질문이라고 생각하지 않지만이 문제를 해결할 수 없으며 스택에서 아무 것도 찾을 수 없습니다. 중복되지 않음). 중첩 된 for 루프를 if/else를 사용하여 lapply 문으로 변경하려고합니다. 데이터 프레임 목록이 있지만 중첩 된 for 루프처럼 행에 액세스하는 방법을 찾지 못했습니다. 나는 bearingDelta 열을 사용하여 bearingDelta 열의 값이 119.9보다 큰지 아닌지에 따라 1 또는 0으로 새 목록을 채 웁니다. 또한이 질문은 내가 최근에 게시 한 질문과 비슷하게 보일 수도 있지만 실현 하기엔 충분하다고 생각합니다.if/else 문이 lapply를 사용하여 데이터 프레임 목록의 행을 반복 반복하는 경우 R
데이터 :
lat <- c(32.87707, 32.87708, 32.87694, 32.87726, 32.87469)
lon <- c(-117.2386, -117.2334, -117.2378, -117.2356, -117.2329)
bearingDelta <- c(180, 49, 23, 119, 129)
df <- data.frame(cbind(bearingDelta, lat, lon))
df.list <- list(df, df, df, df)
중첩 루프 :
lapplyover120 <- list()
for (i in 1:length(tripList)) {
for (j in 1:nrow(tripList[[i]])) {
if (tripList[[i]][j, c("bearingDelta")] <= 119.9) {
over120[[i]][j] <- 0 }
else {
over120[[i]][j] <- 1 }
}
}
(이런 걸 내가 얻을 위해 노력하고있어입니다).
over120 <- lapply(tripList, if (tripList[[i]][j, c("bearingDelta")] <= 119.9) over120[[i]][j] <- 0
else over120[[i]][j] <- 1)
이 샘플 데이터 세트에 대한 원하는 출력은 다음과 같이 보일 것이다 :
> over120
[[1]]
[1] 1 0 0 0 1
[[2]]
[1] 1 0 0 0 1
[[3]]
[1] 1 0 0 0 1
[[4]]
[1] 1 0 0 0 1
일 -와도'lapply (df.list, as.integer (bearingDelta> = 119.9))' – flodel
@flodel 그런 식으로'with'를 사용하지 않았습니다. 유용 할 것입니다. 감사합니다. – alexwhan
대단히 고마워요! – Misc