我想在R中构建一个循环的问题。
我有一个载体
a<-c(1,2,3,4,5,6,7,8)
现在我想做一个循环,它执行以下计算:
b[1] = 5*a[1] + 10*a[2] + 15*a[3] + 20*a[4]
b[2] = 5*b[1] + 10*a[1] + 15*a[2] + 20*a[3]
b[3] = 5*b[2] + 10*b[1] + 15*a[1] + 20*a[2]
等等。如果可能,解决方案不应包含任何内置函数&#34; (例如sum
)因为这是我真实问题的简化,我想了解如何构建这样的&#34;递归&#34;循环以及如何在循环中实现两个不同的向量。
答案 0 :(得分:1)
a = 1:4
N = 3
temp = a #OR maybe it is temp = a[1:4]
b = numeric(0)
for(i in 1:N){
b = c(b, sum((5 * 1:length(temp)) * temp))
temp = c(tail(b, 1), head(temp, -1))
}
b
#[1] 150 850 5805
答案 1 :(得分:0)
我不确定这个过程应该持续多久,但是我会在10次运行后继续停止它:
a <- c(1,2,3,4)
fct <- function(vect){
return(5*vect[1] + 10*vect[2] + 15*vect[3] + 20*vect[4])
}
inds <- 1:4
for(i in 1:10){
a <- c(a, fct(a[inds]))
inds <- inds+1
}
b <- setdiff(a, c(1,2,3,4))
# [1] 1.500000e+02 3.100000e+03 6.430500e+04 1.334120e+06 2.767872e+07 5.742448e+08 1.191374e+10
# [8] 2.471719e+11 5.128026e+12 1.063901e+14