Skip to content
GitLab
Projects
Groups
Topics
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in
Toggle navigation
Menu
Earth Sciences
ClimProjDiags
Compare revisions
3bf6f2866a6b9a589af7b30884aa8826b6c3ed33...7024de5f7cc7b7abeb005730f8206941276587ed
Commits (2)
Fix the incorrect dlon calculation and create unit test
· 79266cff
aho
authored
May 13, 2022
79266cff
Merge branch 'develop-WeightedMean_dlon' into 'master'
· 7024de5f
aho
authored
May 13, 2022
Fix the incorrect dlon calculation and create unit test See merge request
!26
7024de5f
Hide whitespace changes
Inline
Side-by-side
R/WeightedMean.R
View file @
7024de5f
...
...
@@ -124,11 +124,10 @@ WeightedMean <- function(data, lon, lat, region = NULL, mask = NULL, londim = NU
cosphi
<-
t
(
array
(
cos
(
lat
*
pi
/
180
),
dim
=
c
(
length
(
lat
),
length
(
lon
))))
nblat
<-
length
(
lat
)
nblon
<-
length
(
lon
)
lon
[
lon
>
180
]
=
lon
[
lon
>
180
]
-
360
dlon
<-
abs
(
c
(
abs
(
lon
[
2
:
nblon
])
-
abs
(
lon
[
1
:
nblon
-
1
])))
*
pi
/
180
dlon
<-
diff
(
lon
)
*
pi
/
180
dlon
<-
c
(
dlon
,
dlon
[
1
])
dlon
<-
array
(
dlon
,
dim
=
c
(
nblon
,
nblat
))
dlat
<-
abs
(
c
(
lat
[
2
:
nblat
]
-
lat
[
1
:
nblat
-
1
])
)
*
pi
/
180
dlat
<-
diff
(
lat
)
*
pi
/
180
dlat
<-
c
(
dlat
,
dlat
[
1
])
dlat
<-
t
(
array
(
dlat
,
dim
=
c
(
nblat
,
nblon
)))
weight
<-
(
dlon
*
dlat
*
cosphi
)
...
...
tests/testthat/test-WeightedMean.R
0 → 100644
View file @
7024de5f
context
(
"WeightedMean tests"
)
set.seed
(
1
)
dat1
<-
array
(
rnorm
(
10000
),
dim
=
c
(
lat
=
50
,
lon
=
100
))
lat1
<-
seq
(
-90
,
90
,
length.out
=
50
)
lon1
<-
seq
(
0
,
360
,
length.out
=
101
)[
1
:
100
]
set.seed
(
1
)
dat2
<-
array
(
rnorm
(
10000
),
dim
=
c
(
lat
=
180
,
lon
=
360
,
sdate
=
2
))
lat2
<-
seq
(
-89.5
,
89.5
,
length.out
=
180
)
lon2
<-
seq
(
-180
,
179
,
length.out
=
360
)
set.seed
(
1
)
dat3
<-
array
(
rnorm
(
10000
),
dim
=
c
(
sdate
=
2
,
lat
=
171
,
lon
=
350
))
lat3
<-
seq
(
-90
,
90
,
length.out
=
181
)[
c
(
1
:
80
,
seq
(
81
,
101
,
by
=
2
),
102
:
181
)]
lon3
<-
seq
(
-180
,
179
,
length.out
=
360
)[
c
(
1
:
170
,
seq
(
171
,
190
,
by
=
2
),
191
:
360
)]
set.seed
(
1
)
dat4
<-
array
(
rnorm
(
10000
),
dim
=
c
(
lat
=
180
,
lon
=
360
,
sdate
=
2
,
time
=
1
))
lat4
<-
seq
(
-89.5
,
89.5
,
length.out
=
180
)
lon4
<-
seq
(
-179.5
,
179.5
,
length.out
=
360
)
test_that
(
"dat1"
,
{
expect_equal
(
dim
(
WeightedMean
(
dat1
,
lat
=
lat1
,
lon
=
lon1
)),
NULL
)
expect_equal
(
as.vector
(
WeightedMean
(
dat1
,
lat
=
lat1
,
lon
=
lon1
)),
-0.009785971
,
tolerance
=
0.0001
)
})
test_that
(
"dat2"
,
{
expect_equal
(
dim
(
WeightedMean
(
dat2
,
lat
=
lat2
,
lon
=
lon2
)),
NULL
)
expect_equal
(
as.vector
(
WeightedMean
(
dat2
,
lat
=
lat2
,
lon
=
lon2
)),
c
(
-0.005799676
,
-0.007599831
),
tolerance
=
0.0001
)
})
test_that
(
"dat3"
,
{
expect_equal
(
dim
(
WeightedMean
(
dat3
,
lat
=
lat3
,
lon
=
lon3
)),
NULL
)
expect_equal
(
as.vector
(
WeightedMean
(
dat3
,
lat
=
lat3
,
lon
=
lon3
)),
c
(
-0.0253997
,
0.0132251
),
tolerance
=
0.0001
)
})
test_that
(
"dat4"
,
{
expect_equal
(
dim
(
WeightedMean
(
dat4
,
lat
=
lat4
,
lon
=
lon4
)),
c
(
sdate
=
2
,
time
=
1
)
)
expect_equal
(
as.vector
(
WeightedMean
(
dat4
,
lat
=
lat4
,
lon
=
lon4
)),
c
(
-0.005799676
,
-0.007599831
),
tolerance
=
0.0001
)
})