반응형

R - 컬럼별 동일한 함수 적용을 위한 lapply 테크닉

/* DeepPlay 2022-09-05 */

이전 포스트: apply 계열의 R 함수 정리 (포스팅)

 

데이터 처리 중, 각 컬럼별로 동일한 함수를 적용시키고 싶을 때가 있다. 예를 들면, string 형태로 저장된 컬럼들을 일괄적으로 numeric으로 바꾸고 싶다고 하자. 이 때, lapply 를 유용하게 사용할 수 있다. 

 

정보) lapply 는 vector, list 를 인풋으로 받아 list 를 아웃풋으로 내보낸다.   

 

아래 함수는 vars 에 지정된 컬럼들을 lapply 함수를 활용해 일괄적으로  numeric 형으로 변환하는 코드이다.  

# vars 에 numeric 으로 변환하고 싶은 컬럼 
data[,vars] <- lapply(vars, function(x){
  as.numeric(unlist(data[,x])) # [,x] 방식의 컬럼 선택은 output 을 list 형태로 반환한다. 
})

위 코드를 설명하면 우선 각 컬럼 x 별로 as.numeric 함수를 적용시켜 이 값을 list of vectors 로 반환한다. 그리고 이 반환값이 dataframe 의 컬럼값을 지정하도록 수행된다. (이러한 코드가 가능한 이유는 dataframe 이 기본적으로 list 의 결합이기 때문이다.)

반응형
반응형