Как мне увеличить на требуемую долю и вернуть как вектор

#r #function #loops

#r #функция #циклы

Вопрос:

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

 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. вы можете объявить пустой вектор v=rep(0,n) и заполнять его на каждой итерации, помещая v[i] = increment в конец вашего цикла

Ответ №1:

Вы перезаписываете 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