Я пытаюсь получить сумму каждого элемента в векторе без использования каких-либо встроенных функций:
x <- 1:6
arraysum <- function(x){
for (i in 1:length(x)) {
y <- 0
y <- i+1
}
print(y)
}
Но я получаю результат 7 вместо 21. Может ли кто-нибудь сообщить мне, где я ошибаюсь?
Если вы сбрасываете значение на 0 при каждом проходе цикла ... чего вы ожидаете? Подумайте об этом еще немного.
Более того, ваш код пытается суммировать не элементы x, а индексы 1: 6.





Просто используйте Reduce:
Reduce(`+`, x)
# [1] 21
То же самое может быть достигнуто и с sum(x), но OP упомянул I am trying to get the total of every element in a vector without using any *inbuilt* functions:. Возможно, вы захотите включить в свой ответ цикл for.
@RonakShah Проблема не может быть решена, если истолковать ее буквально. Даже + - это встроенная функция.
Хаа, да, но я предполагаю, что это задание, в котором профессор сказал им не использовать какие-либо встроенные функции в R, но я могу ошибаться.
@RonakShah Согласен, я полагаю, профессор имел в виду «встроенные функции, специально разработанные для суммирования векторных элементов».
@ SvenHohenstein, @ RonakShah Я исправил свой код, используя предложения Эдварда и 42, и он отлично работает. Это не задание, нет профессора, и я не студент, я новичок в программировании и тестировал себя по этому сценарию.
Вы запускаете
yс 0, а затем сразу устанавливаете его наi + 1, что означает, что y принимает следующие значения в цикле for: 2, 3, 4, 5, 6, 7. Попробуйте переместитьy <- 0за пределы цикла for и изменить присвоение. кy <- y + x[i]. Это решит проблему и заставит функцию работать сx, содержащим любые значения.