줄리아에서 0이나 결측치를 제외한 평균 구하는 법
개요
R 언어의 합계 sum()
이나 평균 mean()
에서는 함수 그 자체가 해당 결측치를 무시할 수 있는 옵션을 가지고 있는데, 줄리아에서는 그런 옵션이 없는 대신 함수형 프로그래밍functional Programming적인 방법을 적극적으로 사용한다.
코드
julia> data = [0,1,2,3,0]
5-element Vector{Int64}:
0
1
2
3
0
julia> sum(data) / length(data)
1.2
julia> sum(data) / sum(!iszero, data)
2.0
위쪽은 $0$까지 포함해서 모든 표본의 수로 나눈 1.2, 아래쪽은 !iszero
라는 함수를 인자로 주어서 $0$이 아닌 값만 카운트해서 얻은 표본의 수로 나눈 2.0을 얻었다. R보다 강력해진다고 할 수 있는 부분은, 함수 그 자체의 옵션에 의지하지 않고 같은 방법으로 isnan()
, isinf()
, ismissing()
등의 수많은 예외처리 함수들을 사용할 수 있으며 커스텀이 자유롭다는 것이다.
퍼포먼스에서 큰 차이는 없지만, is~
계열의 함수처럼 그 리턴이 반드시 불리언이라면 분모의 sum()
은 count()
로 바뀌어도 상관없다.
환경
- OS: Windows
- julia: v1.7.0