R, for 루프를 사용하여 목록의 각 요소를 동일한 명령으로 실행하는 방법
예를 들어 datanewV_102, datanewV_103, datanewV_105는 모두 100 개의 관측치와 50 개의 열이있는 데이터 프레임입니다.
세 데이터 프레임 모두에 대해 동일한 열, 최고의 6 번째 열을 삭제하고 싶습니다.
원하는 결과 : (새로운 데이터 프레임 없음, 기존 데이터 프레임에서 편집.)
datanewV_102, datanewV_103, datanewV_105는 100 개의 관측 값과 49 개의 열이있는 데이터 프레임이됩니다.
내 코드는 다음과 같습니다.
vlist12 = list (datanewV_102, datanewV_103, datanewV_105)
for (vlist12의
v12 ) { v12 = v12 [-6]
}
그러나 내 결과에서 datanewV_102, datanewV_103, datanewV_105는 동일하게 유지됩니다. v12는 datanewV_105의 복사본이며 6 번째 열이 삭제되었습니다.
어떻게 수정할 수 있습니까? for 루프를 사용해야하는 경우?
이러한 모든 개별 데이터 프레임을 저장할 수 있으려면 출력이 목록이어야합니다 (현재 버전에서는 v12
루프가 발생할 때마다 덮어 쓰기 됨).
그것은 가능합니다 for
인덱스에 당신이 경우 루프, 루프. 예를 들면 :
datanewV_102 <- data.frame(x = letters[1:10],
y = LETTERS[1:10])
datanewV_103 <- data.frame(x = letters[1:10],
y = LETTERS[1:10])
datanewV_105 <- data.frame(x = letters[1:10],
y = LETTERS[1:10])
datanew_list <- list(datanewV_102,datanewV_103,datanewV_105)
output_list1 <- list()
for(i in seq_along(datanew_list)){
cur_df <- datanew_list[[i]]
output_list1[[i]] <- cur_df[-2]
}
그러나 일반적으로 lapply
내용을 읽기 쉽게 만드는 경우가 있습니다. 예를 들면 :
remove_col <- function(df){
df[-2]
}
output_list2 <- lapply(datanew_list, remove_col)
두 솔루션은 동일합니다.
all.equal(output_list1, output_list2)
#> [1] TRUE
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다