IT박스

data.table에서 여러 열 제거

itboxs 2020. 11. 9. 07:56
반응형

data.table에서 여러 열 제거


data.table에서 여러 열을 제거하는 올바른 방법은 무엇입니까? 현재 아래 코드를 사용하고 있지만 실수로 열 이름 중 하나를 반복했을 때 예기치 않은 동작이 발생했습니다. 이것이 버그인지 아니면 이런 식으로 열을 제거하면 안되는지 확실하지 않았습니다.

library(data.table)
DT <- data.table(x = letters, y = letters, z = letters)
DT[ ,c("x","y") := NULL]
names(DT)
[1] "z"

위는 잘 작동하지만

DT <- data.table(x = letters, y = letters, z = letters)
DT[ ,c("x","x") := NULL]
names(DT)
[1] "z"

이것은 견고하고 재현 가능한 버그처럼 보입니다. 버그 # 2791 로 접수되었습니다 .

열을 반복하면 후속 열이 삭제되는 것으로 보입니다.
열이 남아 있지 않으면 R이 충돌합니다.


업데이트 : 이제 v1.8.11에서 수정되었습니다. 에서 뉴스 :

동일한 쿼리에서 동일한 열에 두 번 할당하면 일부 상황에서 충돌이 아니라 오류가 발생합니다. 예 : DT [, c ( "B", "B") : = NULL] (같은 열을 두 번 참조하여 삭제). 보고 해 주신 Ricardo ( # 2751 ) 및 matt_k ( # 2791 )에게 감사드립니다. 테스트가 추가되었습니다.


이 질문에 대한 답변을 받았지만이를 부수적으로 생각하십시오.

여러 열을 삭제하려면 다음 구문을 선호합니다.

DT[ ,`:=`(x = NULL, y = NULL)]

여러 열 (변수)을 추가하는 항목과 일치하기 때문에

DT[ ,`:=`(x = letters, y = "Male")]

또한 중복 된 열 이름을 확인합니다. 따라서 x두 번 삭제하려고 하면 오류 메시지가 표시됩니다.

참고 URL : https://stackoverflow.com/questions/16638484/remove-multiple-columns-from-data-table

반응형