2014-11-27 3 views
1

Я пытаюсь обвести вокруг себя петли в R, и у меня есть то, что мне кажется очень простым примером, который не работает.Базовый для петли не работает

У меня есть данные в таблице:

Author ev.ctrl n.ctrl ev.trt n.trt year 
1 Cammu  8  56  7 54 1994 
2 Eckert  49 137  46 137 2001 
3 Kuusela  1  15  1 18 1998 
4 Ohlisson  205 625 183 612 2001 
5  Rush  259 392 235 393 1996 
6 Woodward  7  20  6 40 2004 

Я хочу, чтобы вычислить сумму столбца n.trt Я знаю, что я мог сделать sum(epidural$n.trt) но хочу попробовать и использовать для цикла.

у меня есть:

for (i in 1:6){ 
    sum(epidural$n.trt[i]) 
    } 

Это не дает мне ничего, а не количество, ни об ошибке. Любая идея, в чем проблема?

Благодаря

+0

Это будет только вычислить сумму одного значения, что является само значение. Кроме того, циклы 'for' не возвращают результаты. Вам нужно сначала инициализировать вектор, а затем заполнить вектор внутри цикла –

+0

Вы ничего не делаете со значением внутри цикла for. Если ваша обернутая печать или кошка вокруг этого выражения вы увидите результаты. –

+0

Извините, не могли бы вы продолжить дальше. Я думал, что я занимаюсь (я в 1: 6), я собирал n.trt для каждого i, а затем суммировал все испытания? – denby47

ответ

1

Вы должны объявить переменную сумму вне для цикла и добавить значения к нему. Нет необходимости вызывать функцию sum, поскольку у вас есть только одно значение, а не вектор.

s <- 0 
for (i in 1:6){ 
    s <- s + epidural$n.trt[i] 
} 
s 
+0

Не имеет смысла это делать, и это был не вопрос. –

+0

@BondedDust Что значит, он хочет в сумме, используя для цикла? –

+0

Кажется, что я очень устал, почему он дает неправильную сумму? из-за значений NA? –

3

Сделайте это вместо того, чтобы ... мы не нужны никакие steenking петли:

> treats <- sum(epidural['n.trt']); treats 
[1] 1254 
+0

Что это разница между вашим кодом и суммой (epidural $ n.trt)? –

+1

Я, вероятно, пытаюсь сделать пример цикла из ничего, когда просто могу просто суммировать значения вектора n.trt. Я просто не понимаю Я понимаю, что делают петли (я новичок R)! – denby47

+0

Это хороший пример. Если вы хотите прокручивать строки, как вы здесь, вы используете держатель первого места в такой матрице: data [i, 'colname']. Если цикл проходит через столбец, данные ['rowname', i]. – Jason

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