Как сложить два разных, по размеру, вектора в R
Допустим есть вектора:
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
b <- c(1, 2, 3, 4)
Как сложить все элементы из a с элементами b циклично, чтобы на выходе был вот такой результат:
2, 4, 6, 8, 6, 8, 10, 12, 10, 12
Если можно срезами, то было бы замечательно
Ответы (3 шт):
Автор решения: aGricolaMZ
→ Ссылка
я бы делал так:
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
b <- c(1, 2, 3, 4)
a+rep(b, ceiling(length(a)/length(b)))[1:length(a)]
[1] 2 4 6 8 6 8 10 12 10 12
Автор решения: haker
→ Ссылка
чтобы сложить надо использовать плюс a+b
a <- c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
b <- c(1, 2, 3, 4)
print(a+b)
Автор решения: aleksandr barakin
→ Ссылка
для сложения двух векторов (любой длины) служит оператор +:
> rep(1, 8) + 1:4
[1] 2 3 4 5 2 3 4 5
в случае, когда длина большего вектора не кратна длине меньшего, вдобавок к результату получаем предупреждение:
> rep(1, 10) + 1:4
[1] 2 3 4 5 2 3 4 5 2 3
Warning message:
In rep(1, 10) + 1:4 :
longer object length is not a multiple of shorter object length
при желании вывод предупреждения можно подавить, например, с помощью функции suppressWarnings():
> suppressWarnings(rep(1, 10) + 1:4)
[1] 2 3 4 5 2 3 4 5 2 3