2013-07-16 2 views
1

Я делаю это в R. Хотя есть ярлык способ сделать следующее в R, я хочу, чтобы проверить это:Как работает цикл for?

x <- c(7,6,8,7) 
    y <- 1 
    n <- length(x) 
    p=1 
    s = 0 
    for(i in 1:n){ 
      s = s + (x^p * y^p) 
    } 

    s 

Поскольку я не указал номер индекса x в течение цикла , Я предположил, что будет использоваться только первый элемент x. Так что я сделал таблицу:

i  s= s + (x^p * y^p) 
    1  s= 0 + (7^1 * 1^1)=7 
    2  s= 7 + (7^1 * 1^1)=14 
    3  s= 14 + (7^1 * 1^1)=21 
    4  s= 21 + (7^1 * 1^1)=28 

Но результат был:

s 
    [1] 28 24 32 28 

я не мог соответствовать этот результат в любом случае. Как это работает?

+0

почему вы используете 's = s + (х^р * у^р) ', а не' s <- s + (х^р * у^р) ' –

+2

@LiranElisha это личное предпочтение , Код по-прежнему действителен (и идентичен). –

+0

Почему вы угадываете, когда программируете? Прочтите документацию. Если вы догадались, вы должны хотя бы проверить систематически, если ваше предположение действительно. – Roland

ответ

4

x - это не целое число, а целое число. Вам нужно подмножить свой x путь, который предназначил Бог. Когда вы укажете x, R не использует только первый элемент, но все они. Это предположение, что помутнение вашего решения.

x <- c(7,6,8,7) 
y <- 1 
n <- length(x) 
p <- 1 
s <- 0 
for(i in 1:n){ 
    s <- s + (x[1]^p * y^p) 
    message(s) 
} 

7 
14 
21 
28 
+0

На самом деле я привык к программе 'C'. Я новичок в 'R'. Не могли бы вы рассказать мне, что функция массажа работает как 'print'? – ABC

+0

@harry yes, 'message' выполняет аналогичную функцию' print'. Введите '? Message', чтобы узнать подробности. –

+0

Большое спасибо. Вы действительно хороший человек. – ABC

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