for循环和两个不同的向量

时间:2017-09-27 16:08:57

标签: r for-loop

我想在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;循环以及如何在循环中实现两个不同的向量。

2 个答案:

答案 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