강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của seongseong4132732
seongseong4132732

câu hỏi đã được viết

[Hãy cho tôi R] Đặt nền móng cho R

객체생성2에서 퀴즈1번에 대해서 질문이 있습니다.

Đã giải quyết

Viết

·

236

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번은 바꿀수 있는지 궁금합니다.

R

Câu trả lời 1

1

datadoctor님의 프로필 이미지
datadoctor
Người chia sẻ kiến thức

안녕하세요 김승욱 입니다.

해당 코드의 핵심은 colnames() 함수로 데이터프레임 객체의 변수명 부분에 접근한 다음에 원하는 원소(변수명)를 지정하고 해당 원소를 신규 원소로 치환하는 것입니다.

그런데 두 번째 코드는 colnames() 함수를 사용하기 전에 df[, c(2, 4)] 로 df객체의 부분집합을 만들어버리기 때문에 온전하게 df 객체에 접근할 수 없게 됩니다. 즉, df 객체가 아닌 임시로 만든 df[, c(2, 4)] 객체의 변수명을 조정한 꼴이 되기 때문에 제대로 동작하지 않습니다.

자주 받는 질문인데 영상에서 설명이 미흡했나보네요.

추가 질문 있으시면 편하게 또 남겨주세요.

감사합니다.

Hình ảnh hồ sơ của seongseong4132732
seongseong4132732

câu hỏi đã được viết

Đặt câu hỏi