728x90

R은 통계프로그래밍 언어로 일반인이 사용하기 쉽게 만든 언어이다.

그러나 필자는 프로그래머이고 비 프로그래머의 인식으로 접근하기 힘든면이 있다.

강의 또한 그러하다. 강의 곳곳에 프로그래머적인 시선이 들어있으니 참고하여 필요없으면 넘겨라.


참고:

[개발환경 셋팅하기]R설치 및 환경변수 등록-(1)

[개발환경 셋팅하기]RStudio설치-(2)

[개발환경 셋팅하기]RStudio프로젝트 만들기-(3)


리스트는 사용하기에 따라서 벡터처럼, 또한 매트릭스처럼, 또한 데이터프레임처럼 쓸 수 있는 자료형이다.

즉 쉽게 말하면 이 자료형은 필자생각에 이름이 리스트라는 이름보단 딕셔너리나 연관배열에 이름이 가깝다.

여기서 R의 설명서에보면 놀랍게도 이 만능 자료형이 자주사용되지 않는다는 설명이 적혀있다.

일단 어떤 자료형인지 보자.


member <- list(name='jiharu',address='pusan',tel='010-1234-5678',age=25)

print(member)


list자료형을 사용할경우 해당 속성에 변수를 타입에 상관업시 가져다 붙일 수 있다.

이역시 =를 사용항여야 하며 <-로 속성을 연결해서는 안된다.

위의 코드를 출력한 결과는 아래와 같다.



뭐 이까지는 예상한 대로일 것이다.

그런데 list의 데이터의 접근은 해당 변수의 이름으로 접근할 수 있다.

이때는 $지시자를 사용하거나 [[]]를 열고 안에 해당 키값은 문자열로 넣는 방법이 있다.

중요한건 리스트에서 멤버를 호출할시에 괄호를 두번써야한다.

괄호를 한번쓸수 없는것은 아니지만 괄호를 한번만 쓰게되면 그 값이 아니라 그 리스트이름을 포함해서 또다른 리스트가 반환된다.

그대로 사용하고 싶다면 [[]]를, 복제하고 싶다면[]를 사용하자.

사용방법은 아래와 같다.


member <- list(name='jiharu',address='pusan',tel='010-1234-5678',age=25)

member$name = 'kukaro'

print(member$name)

print(member[['name']])



결과는 본인이 예상한 대로 나올 것이다.

그리고 list는 안에 다른 변수역시 얼마든지 붙일 수 있다고 하였다.

따라서 아래와 같은 방식으로도 사용할 수 있다.


num <- seq(5)

title <- c('StarCraft','LeagueOfLegend','BattleGround','AgeOfEmfire','Gersang')

prices <- c(45000,5000,50000,70000,5000)

count <- c(10,5,3,7,6)


game <- list(Num=num,Title=title,Prices=prices,Count=count)

print(game)



이러한 방식으로 데이터프레임처럼 흉내내서 사용하는것 역시 가능하다.

대신 리스트내의 자료끼리의 순서가 없으므로 무조건 키값으로만 접근해야한다는 불편한 점은 있다.

그리고 제대로 활용하기 위해서는 키값을 알아야할 것이다. 만약 키값이 필요하다면 names함수를 사용하자.


num <- seq(5)

title <- c('StarCraft','LeagueOfLegend','BattleGround','AgeOfEmfire','Gersang')

prices <- c(45000,5000,50000,70000,5000)

count <- c(10,5,3,7,6)


game <- list(Num=num,Title=title,Prices=prices,Count=count)

print(game)


print(names(game))


키값을 사용하지 않고 숫자로 확인하는 방법역시 가능하다.


num <- seq(5)

title <- c('StarCraft','LeagueOfLegend','BattleGround','AgeOfEmfire','Gersang')

prices <- c(45000,5000,50000,70000,5000)

count <- c(10,5,3,7,6)


game <- list(Num=num,Title=title,Prices=prices,Count=count)

print(game[2:3])



넣은 순서가 원소의 순서이므로 순차대로 접근하는 방법 역시 가능하다.


사족을 달자면 필자가 생각할때 R의 list는 매우 좋은 자료형이다.

다른 언어의 자료구조 맵에 대응되며 또한 순차접근도 가능하기 때문에 실용성이 높다고 생각되지만

이상하게도 교재들을 보면 그리 적극적이게 사용되는것 같지는 않다.

아무래도 데이터프레임같은 자료형이 더 쓰기 쉬워서 그런것일 수도 있고... 잘 모르겠다.

'Programming > R' 카테고리의 다른 글

[R-08]분기문(조건문)  (0) 2017.11.18
[R-07]배열(Array)  (0) 2017.11.18
[R-05]데이터 프레임(Data Frame)  (0) 2017.11.18
[R-04]행렬(matrix)  (0) 2017.11.18
[R-03]벡터(vector)  (0) 2017.11.17

+ Recent posts