2013-09-06 3 views
-1

Я хочу создать столбец длины nr (из множества отдельных кадров данных), заполненный постепенно возрастающими значениями на основе E и целым числом f. Для первой строки я хочу 0 (E * 0), следующий должен быть 1.655 (E * 1), следующий 3.311 (E * 2), до тех пор, пока число строк не будет равно nr. Лучший способ, которым я могу думать, чтобы описать то, что я хочу сделать, заимствует из моего опыта программирования мой калькулятор:Создание столбца значений на основе формулы в R

(№ и Е предварительно вычисленные значения)

f <- 0 
Lbl A 
(new value to go into a new row in the same column) <- E*f 
If f<nr 
f <- f+1 
Goto A 
Else 
Break 
##pair this column with another column named "G" in a new data frame 
##save a csv file of this new data frame 

Идея заключается в том, что если целое число f получает то же значение, что и nr, цикл прерывается. Похоже, что с достаточно простой идеей для выполнения, но я до сих пор не знаю, что большинство основных функций в R.

+0

Не могли бы вы сказать нам, что E в коде? – Metrics

+0

@Metrics: Я думаю, что E в основном 1.655 – Alex

+0

@ Alex: Спасибо за это – Metrics

ответ

1

Try:

E*seq(0,nr,1) 

Если nr=10:

> 1.655*seq(0,nr-1,1) 
[1] 0.000 1.655 3.310 4.965 6.620 8.275 9.930 11.585 13.240 14.895 
2

При использовании R, попробуйте провести анимизацию своих операций, а не использовать циклы (которые, как правило, медленнее в R).

Итак:

E <- 1.655 
values <- E*0:(nr-1) 
+0

Разве это не 'E * (0: (nr-1))' как хочет OP? Или, 'E * 1: nr-E' – harkmug

+0

@rmk: Право, я пропустил это, спасибо :) – nico