Следующий способ кажется более сложным, но более гибким.Сначала извлекаются все переменные, названные по шаблону "MA_"
и sapply
tail
, чтобы извлечь последний элемент.Затем использует diff
, чтобы увидеть, находятся ли они в порядке убывания.
Сначала составьте некоторые данные.
library(zoo)
set.seed(1234) # Reproducible results
n <- 1e3
x <- rnorm(n)
MA_20 <- rollmean(x, k = 20)
MA_50 <- rollmean(x, k = 50)
MA_100 <- rollmean(x, k = 100)
MA_333 <- rollmean(x, k = 333)
Теперь проблема.
score <- NULL
ma <- stringr::str_sort(ls(pattern = "^MA_"), numeric = TRUE)
MA_last <- sapply(ma, function(m) tail(get(m), n = 1))
score[1] <- if(all(diff(MA_last) > 0)) 1 else -1