작성자: admin 작성일시: 2016-09-17 18:55:00 조회수: 130 다운로드: 21
카테고리: R 태그목록:

R에서 리스트 변수 다루기

자료의 갯수

리스트 변수에 자료가 몇 개 들어가 있는지 알기 위해서는 length이라는 명령을 사용한다.

In [1]:
a <- list(1, 2, 3)
In [2]:
length(a)
3

수열 생성하기

1부터 n까지 1씩 증가하는 n개의 숫자를 가지는 수열 리스트는 seq 명령으로 생성한다. seq 명령은 리스트를 만드는 것이 아니라 추후 설명할 배열이라는 것을 만들기 때문에 as.list라는 명령을 추가적으로 사용해야 한다.

In [4]:
b <- as.list(seq(10))
b
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10

만약 1이 아닌 다른 수부터 증가하게 하려면 다음과 같이 seq 명령에 두 개의 숫자를 넣는다. seq 명령은 두 숫자 x, y 에 대해 x보다 같거나 크고(이상), y보다 같거나 작은(이하) 수열을 만든다. 즉 x는 시작값(start), y는 끝값(end) 역할을 한다.

In [6]:
c = as.list(seq(2, 10))
c
  1. 2
  2. 3
  3. 4
  4. 5
  5. 6
  6. 7
  7. 8
  8. 9
  9. 10

만약 1씩 증가하는 것이 아니라 2 혹은 3씩 증가하는 수열을 만들고 싶다면 seq 명령에 세 개의 숫자를 넣는다. 세번째 숫자는 건너 뛰기 숫자(step) 역할을 한다.

In [8]:
d = as.list(seq(2, 10, 3))
d
  1. 2
  2. 5
  3. 8

자료 추가하기

리스트 변수의 마지막에 자료를 더 추가하려면 다음과 같이 명령한다.

In [9]:
e = as.list(seq(4))
e
  1. 1
  2. 2
  3. 3
  4. 4
In [10]:
e[[length(e) + 1]] <- 5
e
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
In [11]:
e[[length(e) + 1]] <- 10
e
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 10

자료 삭제하기

리스트에서 자료를 하나 삭제하려면 다음과 같이 NULL 을 집어넣으면 된다.

In [20]:
f <- as.list(seq(5))
f
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
In [16]:
f[[1]]
1
In [17]:
f[[1]] <- NULL
f
  1. 2
  2. 3
  3. 4
  4. 5
In [18]:
f[[2]]
3
In [19]:
f[[2]] <- NULL
f
  1. 2
  2. 4
  3. 5

서브셋

리스트에서 자료를 하나만 가져오는 것이 아니라 특정 범위의 자료를 모두 가져오고 싶다면 서브셋(subset)이라는 방법을 사용한다.

서브셋은 두 개가 아니라 하나의 대괄호를 사용하여 인덱싱하는 방법이다.

예를 들어 20개의 숫자가 있는 리스트에서 앞의 5개만 가져오고 싶으면 다음과 같이 입력한다.

In [21]:
g <- as.list(seq(20))
g
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
  10. 10
  11. 11
  12. 12
  13. 13
  14. 14
  15. 15
  16. 16
  17. 17
  18. 18
  19. 19
  20. 20
In [22]:
g[1:5]
  1. 1
  2. 2
  3. 3
  4. 4
  5. 5

만약 10 번째에서 15번째까지의 자료라면 다음과 같다.

In [25]:
g[10:15]
  1. 10
  2. 11
  3. 12
  4. 13
  5. 14
  6. 15

질문/덧글

아직 질문이나 덧글이 없습니다. 첫번째 글을 남겨주세요!