R

[R 프로그래밍] 논리 함수

동호다찌 2022. 12. 26. 13:50

any()

any(..., na.rm = FALSE)는 주어진 논리 벡터 중에 어느 하나라도 TRUE이면 TRUE를 반환합니다.

# 어느 하나라도 0미만 이면 TRUE 반환
> (x <- seq(-3, 3, by = 1))
[1] -3 -2 -1  0  1  2  3

> any(x < 0)
[1] TRUE

> if (any(x < 0)) cat("x는 음수를 포함하고 있습니다\n")
x는 음수를 포함하고 있습니다

 

all()

all(..., na.rm = FALSE)는 주어진 논리 벡터 모두가 TRUE이면 TRUE를 반환합니다. 어느 하나라도 FALSE가 있으면 FALSE를 반환합니다.

> (x <- seq(-3, 3, by = 1))
[1] -3 -2 -1  0  1  2  3

> all(x < 0)
[1] FALSE

> if (all(x >= -3 )) cat("x에 포함된 수는 모두 -3 이상입니다\n")
x에 포함된 수는 모두 -3 이상입니다

 

which()

which(x, arr.ind = FALSE, useNames = TRUE)는 벡터(또는 배열) x에서 TRUE인 것의 위치를 반환합니다. x가 배열인 경우 arr.ind = TRUE이면 배열형태의 위치를 반환합니다.

> (x <- 5:10)
[1]  5  6  7  8  9 10

> which(x == 7)
[1] 3

> x[which(x == 7)]
[1] 7
# 배열 위치 반환
> x <- 5:16
> x
 [1]  5  6  7  8  9 10 11 12 13 14 15 16
 
 # x를 2x2 행렬의 3층 배열로 만들기
> dim(x) <- c(2, 2, 3);
> x
, , 1

     [,1] [,2]
[1,]    5    7
[2,]    6    8

, , 2

     [,1] [,2]
[1,]    9   11
[2,]   10   12

, , 3

     [,1] [,2]
[1,]   13   15
[2,]   14   16

# 벡터형태의 위치 반환
which(x == 15)                    
1] 11

# 배열형태의 위치 반환
> which(x == 15, arr.ind = TRUE)
     dim1 dim2 dim3
[1,]    1    2    3
# 행렬 위치 반환 (배열과 유사)
> x <- matrix(5:16, 3, 4);
> x
     [,1] [,2] [,3] [,4]
[1,]    5    8   11   14
[2,]    6    9   12   15
[3,]    7   10   13   16

# 벡터형태의 위치 반환
> which(x %% 3 == 0)                   
[1]  2  5  8 11

# 행렬형태의 위치 반환
> which(x %% 3 == 0, arr.ind = TRUE)
     row col
[1,]   2   1
[2,]   2   2
[3,]   2   3
[4,]   2   4
# 데이터 프레임 위치 반환
# R 내장 데이터셋 women - 미국 여성 키(인치)와 몸무게(파운드)
> str(women)
'data.frame':	15 obs. of  2 variables:
 $ height: num  58 59 60 61 62 63 64 65 66 67 ...
 $ weight: num  115 117 120 123 126 129 132 135 139 142 ...
 
> which(women$height < 60)
[1] 1 2

> women[which(women$height < 60),]
  height weight
1     58    115
2     59    117

 

which.min()

which.min(x)는 벡터 x의 최소값 위치를 반환합니다.

> x <- c(1:4, 0:5, 11); x
 [1]  1  2  3  4  0  1  2  3  4  5 11
 
> which.min(x)
[1] 5
# 데이터프레임
# R 내장 데이터셋 women - 미국 여성 키(인치)와 몸무게(파운드)

> str(women)
'data.frame':	15 obs. of  2 variables:
 $ height: num  58 59 60 61 62 63 64 65 66 67 ...
 $ weight: num  115 117 120 123 126 129 132 135 139 142 ...
 
> which.min(women$weight)
[1] 1

> women[which.min(women$weight)]
   height
1      58
2      59
3      60
4      61
5      62
6      63
7      64
8      65
9      66
10     67
11     68
12     69
13     70
14     71
15     72

 

which.max()

which.max(x)는 벡터 x의 최대값 위치를 반환합니다.

# 벡터
> x <- c(1:4, NA, 11, 0:5);
> x
 [1]  1  2  3  4 NA 11  0  1  2  3  4  5
 
> which.max(x)
[1] 6
# 데이터프레임
# R 내장 데이터셋 women - 미국 여성 키(인치)와 몸무게(파운드)

> str(women)   
> 'data.frame':    15 obs. of  2 variables:
>  $ height: num  58 59 60 61 62 63 64 65 66 67 ...
>  $ weight: num  115 117 120 123 126 129 132 135 139 142 ...

> which.max(women$weight)
> [1] 15
> women[which.max(women$weight),]
>    height weight
> 15     72    164

 

isTRUE()

isTRUE(x)는 x가 TRUE이면 TRUE를 반환합니다. 유사한 것으로 isFALSE(x)가 있습니다.

> x <- TRUE

> isTRUE(x)
[1] TRUE

> isFALSE(x)
[1] FALSE

'R' 카테고리의 다른 글

[R 프로그래밍] 반복 함수  (0) 2022.12.26
[R 프로그래밍] 행렬 함수  (0) 2022.12.26
[R 프로그래밍] 수학 함수  (0) 2022.12.22
[R 프로그래밍] while()  (0) 2022.12.22
[R 프로그래밍] while()  (0) 2022.12.22