-
-
Save MikePeleah/bcfa5768d5675cd4e077ead72ee0900f to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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