5. which와 기본함수

CHOI·2021년 6월 11일
0

R

목록 보기
5/10
post-thumbnail

0보다 큰 값들의 합

아래 예시를 실행하면 논리 값들이 나온다.

a = c(-10:20)
a > 0
[1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE
[15]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
[29]  TRUE  TRUE  TRUE

그렇다면 만약 0보다 큰 값들의 전체 합을 구하려면 어떻게 할까?

sum(a>0) # [1] 20

이렇게 하면 될 것 같다. 그러나 위 예시를 실행하면 '20' 이 나온다. 왜 그럴까?

왜냐하면 앞서 확인했지만 a > 0 의 값이 논리값이기 때문에 0보다 큰 값들은 TRUE 즉 1로 보기 때문에

TRUE의 값이 총 20개 있으니까 sum(a>0)은 20이 나온다.

그렇다면 실제로 0보다 큰 값들의 합을 구하려면 어떻게 해야할까?

a[a>0] # [1]  1  2  3  4  5  6  7  8  9 10 11 12 13 14 15 16 17 18 19 20

위 예제를 활용하면 된다. 이는 0보다 큰 값들을 출력하라는 의미이다. 따라서 이제 이 값들을 더해주면 되기 때문에

sum(a[a>0]) # [1] 210

를 하면 간단하게 원하게 얻을 수 있다.

which

이 함수는 우리가 원하는 값들의 위치를 알 수 있는 함수이다. 앞서 사용했었던 -10부터 20까지의 숫자가 들어있는 a 를 활용해서 which 를 사용해보면 아래와 같다.

which(a>0) # [1] 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31

a 에는 -10부터 20까지 있기 때문에 0보다 큰 1이 있는 위치(12)부터 20이 있는 위치(31)까지 출력되는 것을 볼 수 있다. 이를 활용해서 앞서 우리가 구했었던 0보다 큰 값들의 합을 다음과 같이도 표현할 수 있다.

sum(a[which(a>0)]) # [1] 210
profile
벨로그보단 티스토리를 사용합니다! https://flight-developer-stroy.tistory.com/

0개의 댓글