#r #loops #for-loop #assign
#r #циклы #для цикла #назначить
Вопрос:
Как назначить, например a1, для списка результатов из цикла ниже. Мне нужно присвоить ему имя, поскольку я хотел бы привязать его к другому фрейму данных. Результатом приведенного ниже цикла является вектор, подобный следующему
[1] 1 [1] 0.5406649 [1] 0.3004368 [1] 0.1719659 [1] 0.1016359 [1] 0.06217712 [1] 0.03945969 [1] 0.02602179 [1] 0.0178452 [1] 0.01272237 [1] 0.009415309 [1] 0.00721497 [1] 0.005706426 [1] 0.004641471 [1] 0.003868288 [1] 0.00329191 [1] 0.002851581 [1] 0.002507559 [1] 0.002233267 [1] 0.002010551 [1] 0.001826749 [1] 0.001672853 [1] 0.001542335 [1] 0.001430377 [1] 0.001333362 [1] 0.001248536 [1] 0.001173769 [1] 0.001107392 [1] 0.00104808 [1] 0.0009947707 [1] 0.0009466023 [1] 0.0009028692 [1] 0.0008629883 [1] 0.000826474 [1] 0.0007929186 [1] 0.0007619772 [1] 0.0007333567 [1] 0.0007068057 [1] 0.0006821081 [1] 0.0006590766 [1] 0.0006375484 [1] 0.000617381 [1] 0.0005984495 [1] 0.0005806438 [1] 0.0005638664 [1] 0.0005480309 [1] 0.0005330601 [1] 0.0005188852 [1] 0.0005054442 [1] 0.0004926818 [1] 0.0004805478
i<-0
while(i<0.501){
k<-0:103
lx<-table$lx
v<-(1 i)^-(k 1)
df<-data.frame(k,lx,v)
df<-df %>%
mutate(px= lx/lx[1]) %>%
mutate(q_xk = 1- (lead(lx)/lx)) %>%
mutate(all=v*px*q_xk)
print(sum(df$all[-c(101:nrow(df))]))
# replace NA value =0
#df[is.na(df)] <- 0
#sum(df$all[-c(101:nrow(df))])
i<-i 0.01
}
Комментарии:
1. Создайте результирующий вектор перед циклом,
res <- NULL
. Затем, в цикле,res <- c(res, sum(etc))
.2. Это не имеет большого значения, но вы также хотите инициализировать все ваши статические значения вне цикла.
3. @SteveM Да, я заметил это,
k
иlx
. И, вmutate
, такжеpx
,q_xk
Ответ №1:
создайте пустой вектор перед запуском цикла:
vect = c()
и вместо :
print(sum(df$all[-c(101:nrow(df))]))
используйте:
vect = c(vect,sum(df$all[-c(101:nrow(df))])))