Р: Можем ли мы суммировать вектор с условием? - PullRequest
0 голосов
/ 28 сентября 2019

Можно ли использовать сумму всех элементов, имеющих четный индекс в векторе R, не проходя итерацию по всем элементам?такой как сумма (вектор x [i * 2], который я в (1: 5))

Ответы [ 3 ]

1 голос
/ 28 сентября 2019

Есть несколько способов сделать это

set.seed(1234)
i <- sample(5)
i
#[1] 4 5 2 3 1

1) Использовать метод переработки

sum(i[c(FALSE, TRUE)])
#[1] 8

2) Создать последовательность чередующихся индексов для подмножества

sum(i[seq(2, length(i), 2)])

3) Использовать деление по модулю

sum(i[seq_along(i) %% 2 == 0])
1 голос
/ 28 сентября 2019

Умножьте вектор на c(0, 1) и затем добавьте элементы.Из-за рециркуляции векторов элементы с нечетными индексами будут умножены на 0, а элементы в четных индексах будут умножены на 1

 x = 1:10
sum(x * c(0, 1))
#[1] 30
0 голосов
/ 28 сентября 2019

Мы можем использовать seq.int

x <- 1:10
sum(x[seq.int(2, length(x), 2)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...