Translate

2017년 9월 16일 토요일

[R] Data Frame, List에서 name을 변수로 받는 방법


Laptop
운영체제Windows 10 Home 64bit
개발프로그램RStudio Version 1.0.153

자료형 중 name 속성을 가지는 것들에는 모두 해당될 것 같다. 
(Data Frame, List 밖에 몰라서 제목은 그 2개만 썼다.)
아래 소스는 data.frame을 list로 바꿔도 동일한 결과가 나온다.

df <- data.frame(X=1, Y=2, Z=3)

이런식으로 X, Y, Z 라는 name들을 가진 Data Frame이 있다고 하자.

일반적으로 각 값에 접근할 때, $ 기호를 이용하여



이런식으로 실행된다.
단 이게 적용이 되지 않는 경우가 있는데, 바로 아래와 같이 name을 변수로 받을 때이다.

for (i in names(df)){
  show(i)
  show(df$i)
}








결과를 보면 names(df)에 해당하는 i를 출력했을 때 X, Y, Z는 제대로 출력되지만,
df$i 의 경우 접근하지 못하고 NULL이 출력된다.


이 경우, [[]] 를 대신 사용한다.

소스를 고쳐 다음과 같이 쓰면, 정상적인 결과가 출력된다.

for (i in names(df)){
  show(i)
  show(df[[i]])
}









꼭 반복문에서만 이런게 아니라, $ 기호는 변수 자체를 받지 못하는 것 같다.
이걸 보면 알 수 있다.







기초적인 문법인 것 같으나, 독학을 하다보니 약간 헤맸다.