10
10
# ' @return data.frame
11
11
# '
12
12
# ' @export
13
- # ' @importFrom terra roll
14
13
# '
15
14
# ' @examples
16
15
# ' model_file <- paste(system.file("extdata", package = "eva3dm"),
@@ -33,28 +32,28 @@ ma8h <- function(data, time = 'date', var, verbose = TRUE, ...) {
33
32
if (verbose )
34
33
cat(' processing 8-hour moving avarage ... \n ' )
35
34
36
- # moving_average <- function(x, n = 8) {
37
- # if (n > length(x)) {
38
- # stop("Window size 'n' should be less than or equal to the length of the vector 'x'.")
39
- # }
40
- # result <- numeric(length(x) - n + 1)
41
- # for (i in 1:(length(x) - n + 3)) {
42
- # result[i] <- mean(x[i:(i + n - 1)], na.rm = T)
43
- # }
44
- # result <- c(NA,NA,NA,result,NA,NA)
45
- # return(result)
46
- # }
35
+ moving_average <- function (x , n = 8 ) {
36
+ if (n > length(x )) {
37
+ stop(" Window size 'n' should be less than or equal to the length of the vector 'x'." )
38
+ }
39
+ result <- numeric (length(x ) - n + 1 )
40
+ for (i in 1 : (length(x ) - n + 3 )) {
41
+ result [i ] <- mean(x [i : (i + n - 1 )], na.rm = T )
42
+ }
43
+ result <- c(NA ,NA ,NA ,result ,NA ,NA )
44
+ return (result )
45
+ }
47
46
48
47
if (missing(var )){
49
48
VARS = names(data )[! names(data ) %in% time ]
50
49
}
51
50
var <- VARS [1 ]
52
- # data$roll_avg <- moving_average(data[[var]], n = 8)
53
- data $ roll_avg <- terra :: roll(data [[var ]],8 ,mean ,' around' ,na.rm = T )
51
+ data $ roll_avg <- moving_average(data [[var ]], n = 8 )
52
+ # data$roll_avg <- terra::roll(data[[var]],8,mean,'around',na.rm=T)
54
53
output <- data [,c(time ,' roll_avg' )]
55
54
for (var in VARS [- 1 ]){
56
- # data$roll_avg <- moving_average(data[[var]], n = 8)
57
- data $ roll_avg <- terra :: roll(data [[var ]],8 ,mean ,' around' ,na.rm = T )
55
+ data $ roll_avg <- moving_average(data [[var ]], n = 8 )
56
+ # data$roll_avg <- terra::roll(data[[var]],8,mean,'around',na.rm=T)
58
57
output <- cbind(output ,new_var = data $ roll_avg )
59
58
}
60
59
names(output ) <- c(time ,VARS )
0 commit comments