해결된 질문
작성
·
188
1
퀴즈 1번에서 정답은 4번인 colnames(df)[c(2,4)]=c("V2", "V4") 이라고 말씀해주셨습니다만,
보기에서 1번에 있던 colnames(df[,c(2,4)]) = c("V2", "V4") 은 왜 정답이 아닌지 모르겠습니다.
보기 1번과 4번의 앞 부분만 따오면
> colnames(df)[c(2,4)]
[1] "bb" "new2"
> colnames(df[,c(2,4)])
[1] "bb" "new2"
이렇게 동일한 결과가 나오는데 이러한 결과에 =c("V2", "V4") 라는 동일한 조작을 적용했을때 왜 1번은 df의 열 이름을 바꿀수 없고 4번은 바꿀수 있는지 궁금합니다.
답변 1
1
안녕하세요 김승욱 입니다.
해당 코드의 핵심은 colnames() 함수로 데이터프레임 객체의 변수명 부분에 접근한 다음에 원하는 원소(변수명)를 지정하고 해당 원소를 신규 원소로 치환하는 것입니다.
그런데 두 번째 코드는 colnames() 함수를 사용하기 전에 df[, c(2, 4)] 로 df객체의 부분집합을 만들어버리기 때문에 온전하게 df 객체에 접근할 수 없게 됩니다. 즉, df 객체가 아닌 임시로 만든 df[, c(2, 4)] 객체의 변수명을 조정한 꼴이 되기 때문에 제대로 동작하지 않습니다.
자주 받는 질문인데 영상에서 설명이 미흡했나보네요.
추가 질문 있으시면 편하게 또 남겨주세요.
감사합니다.