Skip to content

Instantly share code, notes, and snippets.

@MikePeleah
Created November 12, 2018 05:54
Show Gist options
  • Save MikePeleah/bcfa5768d5675cd4e077ead72ee0900f to your computer and use it in GitHub Desktop.
Save MikePeleah/bcfa5768d5675cd4e077ead72ee0900f to your computer and use it in GitHub Desktop.
maxabssum <- function(z) {
# Функция возвращает вектор, который содержит элементы исходного вектора с максимальной суммой по модулю
# Очевидно, что нам надо сравнить сумму отрицательных и положительных элементов, так как их только уменьшит модуль суммы
# воспользуемся спецификой R -- which() возвращает вектор с номерами индексами исходного вектора, для которого выполняется условие
# Наглядный пример:
# > x <- sample(-100:100,5,replace=FALSE)
# > x
# [1] 60 -43 48 18 -20
# > x>=0
# [1] TRUE FALSE TRUE TRUE FALSE
# > which(x>=0)
# [1] 1 3 4
# > sum(x[which(x>=0)])
# [1] 126
#
# Сравниваем суммы негативных и позитивных элементов, для простоты относим 0 к позитивным
# и возвращаем нужное
if (sum(z[which(z>=0)]) > abs(sum(z[which(z<0)]))) {
return (z[which(z>=0)])
} else {
return (z[which(z<0)])
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment