Как мне увеличить на требуемую дробь и вернуть как вектор - PullRequest
1 голос
/ 11 апреля 2019

Сделал цикл for и хочу вернуть результаты в виде вектора.Кажется, мне удалось добиться успеха только с помощью печати.но это не то, что я после

n<-20
for (i in 1:n) {
  start_point <- 0.50
  frac <- (start_point / n) * (i-1+1)
  increment <- start_point + frac
  print(increment)
}

1 Ответ

1 голос
/ 11 апреля 2019

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

Некоторые улучшения в вашем текущем коде -

1) нет необходимости инициализировать start_point в каждой итерации, и это может быть вне цикла

2) (i - 1 + 1) простоi

n <- 20
increment <- numeric(length = n)
start_point <- 0.50

for (i in 1:n) { 
   frac <- (start_point / n) * i
   increment[i] <- start_point + frac
}

increment
# [1] 0.525 0.550 0.575 0.600 0.625 0.650 0.675 0.700 0.725 0.750 0.775
#     0.800 0.825 0.850 0.875 0.900 0.925 0.950 0.975 1.000

Однако вы можете избежать цикла, используя seq

seq(start_point + (start_point/n), by = start_point/n, length.out = n)

#[1] 0.525 0.550 0.575 0.600 0.625 0.650 0.675 0.700 0.725 0.750 0.775
#    0.800 0.825 0.850 0.875 0.900 0.925 0.950 0.975 1.000
...