2016-01-21 3 views
1

Я новичок в R и пытаюсь определить ответ на второй вопрос Эйлера. Я был в состоянии создать последовательность Фибоначчи с помощью следующего кода:Добавление значений элементов в вектор в R

л < - 50
у < - цифровая (л)
у [1] < - 1
у [2] < - 2
для (я в 3: л) {
+ у [I] < - у [I-1] + у [I-2]}

это дало мне:

у
[1] 1 2 3 5 8 13 21
[8] 34 55 89 144 233 377 610
[15] 987 1597 2584 4181 6765 10946

и т.д. ...

Следующий шаг в решении этой проблемы требует, чтобы я добавил все четные значения этих элементов векторов. Я знаю, что для этого требуется y %% 2 == 0, чтобы получить все ИСТИННЫЕ значения, однако я не нашел способ суммировать значения элементов в этих векторах. Несмотря на поиск google и файлов справки, я не смог найти ответ.

Я спрашиваю, может ли кто-нибудь решить эту проблему на основе моего предыдущего кода для определения последовательности Фибоначчи. Благодаря!

ответ

1

В вашем коде есть дополнительный символ «+», поэтому я здесь воссоздал этот удаленный.

l <- 50 
y <- numeric(l) 
y[1] <- 1 
y[2] <- 2 
for(i in 3:l) { 
    y[i] <- y[i-1] + y[i-2] } 

Тогда, чтобы подмножество вектора на основе значений ИСТИНА просто поставить условие в квадратных скобках:

evenY <- y[y %%2 == 0] 

и затем сумму. В одной строке:

sum(y[y %%2 == 0]) 
+0

Благодарим за помощь. Однако «+» - это нажатие команды + введите внутри R, чтобы создать новую строку кода (я должен просто закодировать в текстовой панели, а затем запустить этот код в R). – rocc

Смежные вопросы