#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