이경수 선생님의 수학실험실

Subsetting_Lists 본문

R

Subsetting_Lists

(이경수) 2021. 4. 15. 11:03

R의 Object에서 일부분을 취하는 방법이다. 다음과 같이 하나 또는 그 이상을 취할 수 있다.

> x<-c("k","o","r","e","a")
> x[1]
[1] "k"
> x[3]
[1] "r"
> x[1:5]
[1] "k" "o" "r" "e" "a"
> x[x>"g"]
[1] "k" "o" "r"
> u<-x>"g"
> u
[1]  TRUE  TRUE  TRUE FALSE FALSE
> x[u]
[1] "k" "o" "r"

 

List에서 부분을 취하는 방법은 다음과 같다.

x[1]와 같이 괄호가 하나인 경우, 괄호 안의 숫자는 리스트에서 names의 인덱스를 나타냄을 알 수 있다.

> x<-list(red=1:3,blue=11:14)
> x[1]
$red
[1] 1 2 3

> x[2]
$blue
[1] 11 12 13 14

 

x[[1]]와 같이 이중괄호를 사용하면 괄호를 한 번 사용할 때와는 달리 해당 name에서의 수열만 나타난다. 

> x<-list(red=1:3,blue=11:14)
> x[[1]]
[1] 1 2 3
> x[[2]]
[1] 11 12 13 14

 

x$name 혹은 x[["name"]] 으로도 리스트의 부분을 취할 수 있다. 

> x<-list(red=1:3,blue=11:14)
> x$red
[1] 1 2 3
> x$blue
[1] 11 12 13 14
> x[["red"]]
[1] 1 2 3
> x[["blue"]]
[1] 11 12 13 14

 

괄호 안에 벡터 c(1,2)를 넣어주면 리스트에서 첫 번째와 두 번째 name의 데이터들이 취해지게 된다.

> x<-list(red=1:3,blue=11:14,green="good")
> x[c(1,2)]
$red
[1] 1 2 3

$blue
[1] 11 12 13 14

> x[c(2,3)]
$blue
[1] 11 12 13 14

$green
[1] "good"
> name<-"red"
> x[[name]]
[1] 1 2 3
> x$name
NULL
> x$red
[1] 1 2 3

 

 

이중괄호 안에 벡터함수를 넣으면 특정 name의 데이터들 중에서 특정 순서에 해당하는 데이터를 꼬집어 취할 수 있다.

> x<-list(red=1:3,blue=11:14,green="good")
> x[[c(1,3)]]
[1] 3
> x[[1]][[3]]
[1] 3

'R' 카테고리의 다른 글

Subsetting_Partial Matching  (0) 2021.04.15
Subsetting_Matrices  (0) 2021.04.15
R의 데이터 타입_이름 속성 (Names Attribute)  (0) 2021.04.14
R의 데이터 타입_프레임(Frames)  (0) 2021.04.14
R의 데이터 타입_결측값(Missing Values)  (0) 2021.04.14
Comments