5.3 R 논리 함수

5.3.1 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는 음수를 포함하고 있습니다

5.3.2 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 이상입니다

5.3.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
dim(x) <- c(2, 2, 3); x  # x를 2x2 행렬의 3층 배열로 만들기
#> , , 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
# 데이터 프레임 위치 반환
str(women)   # R 내장 데이터셋 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

5.3.4 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
# 데이터프레임
str(women)   # R 내장 데이터셋 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

5.3.5 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
# 데이터프레임
str(women)   # R 내장 데이터셋 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

5.3.6 isTRUE()

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

x <- TRUE
isTRUE(x)
#> [1] TRUE
isFALSE(x)
#> [1] FALSE