1. R객체에서 하위집합을 추출하는 오퍼레이터
[ - 객체에서 다양한 요소 추출
(항상 원본과 같은 클래스 객체를 반환)
[[ - 리스트나 데이터 프레임 요소 추출/ 단일 요소만 추출
(단, 반환 객체가 반드시 리스트나 데이터프레임일 필요는 없음)
$ - 리스트나 데이터 프레임 요소를 문자명으로 추출
2. 하위집합
2-1. 벡터
x <-c("a", "b", "c", "c", "d", "a")
x[1]
[1] "a"
x[1:5]
[1] "a" "b" "c" "c" "d"
x[c(1,3,4)]
[1] "a" "c" "c"
u <- x > "a"
u
[1] FALSE TRUE TRUE TRUE TRUE TRUE FALSE
x[u]
[1] "b" "c" "c" "d"
x[x > "a"]
[1] "b" "c" "c" "d"
2-2. 행렬
x <- matrix(1:6, 2, 3)
x
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
x[1,2]
[1] 3
x[1, 2, drop=FALSE] #행렬차원 보존
[,1]
[1,] 3
x[2,1]
[1] 2
x[1, ]
[1] 1 3 5
x[, 2]
[1] 3 4
2-3. 리스트
x<- list(foo= 1:4, bar=0.6)
x
$foo
[1] 1 2 3 4 #단일 대괄호는 항상 같은 클래스를 반환하므로 '리스트' 반환
$bar
[1] 0.6
x[[1]]
[1] 1 2 3 4 #시퀀스만 반환
x <-list(foo=1:4, bar=0.6, baz="hello")
name <-"foo"
x[[name]]
[1] 1 2 3 4
x$name
NULL #x에서 name 단어를 가진 리스트 요소를 찾기 때문에, NULL
x$foo
[1] 1 2 3 4
$foo
[1] 1 2 3 4
$baz
[1] "hello"
x <-list(a=list(10,12,14), b=c(3.14,2.82))
x[[c(1,3)]]
[1] 14
x[[1]][[3]]
[1] 14
x[[c(2,1)]]
[1] 3.14
2-4. 부분일치
x<- list(aardvark =1:5)
x$a
[1] 1 2 3 4 5
x[["a"]] #목록에 정확히 있는 지 확인
NULL
x[["a", exact=FALSE]]
[1] 1 2 3 4 5
2-5. 누락 값 제거
x <-c(1, 2, NA, 4, NA, 5)
bad <- is.na(x)
print(bad) #bad 벡터 = 논리벡터
[1] FALSE FALSE TRUE FALSE TRUE FALSE
x[!bad]
[1] 1 2 4 5
x<- c(1,2,NA,4,NA,5)
y<-c("a", "b", NA, "d", NA, "f")
good <-complete.cases(x,y) #x,y에서 완전한 값이 있는 지 알려주는 함수
good
[1] TRUE TRUE FALSE TRUE FALSE TRUE
x[good]
[1] 1 2 4 5
y[good]
[1] "a" "b" "d" "f"
'R 프로그래밍' 카테고리의 다른 글
21. (R) 벡터 (0) | 2025.05.23 |
---|---|
20. (R) 수열 (0) | 2025.05.22 |
18. 외부에서 파일 불러오기 (R) (0) | 2025.04.24 |
17. 텍스트 데이터 형식 (0) | 2025.04.17 |
16. R - 표 형식 데이터 읽기 (0) | 2025.04.14 |