首页 > 解决方案 > 从 R 中的 for 循环创建数据框,其中包含 if-else 语句

问题描述

我正在尝试使用不同的 if-else 语句从 For 循环中创建一个数据框,因为 random_growth 上的某些值可能是负数,如果我执行直接公式,它将不会被应用。所以我想出了这个循环,但不知何故计算是错误的。

我想有一个 6 列和 10.000 行的数据框,如果百分比为负,它应该能够在每次迭代中减少,但是因为公式中的符号 - 和 + 它只会创建一个减少,然后是增加等等。我知道我的循环不是进行此类计算的最佳方法,但我没有找到另一种方法。拜托,如果你能帮助我,我会很高兴。

random_growth <- rnorm(n=10000, mean=0.11, sd=0.3560766)
fcf0 <- 3619
ffcfs <- data.frame()
  for (i in random_growth){
    if (i>0){
  fcf1= fcf0*(1+i)
  fcf2= fcf1*(1+i)
  fcf3= fcf2*(1+i)
  fcf4= fcf3*(1+i)
  fcf5= fcf4*(1+i)
  fcf6= fcf5*(1+i)
    }
  else{
  fcf1= if ((fcf0*i)>0){fcf0*(1+i)} else {fcf0-(fcf0*i)}
  fcf2= if ((fcf1*i)>0){fcf1*(1+i)} else {fcf1-(fcf1*i)}
  fcf3= if ((fcf2*i)>0){fcf2*(1+i)} else {fcf2-(fcf2*i)}
  fcf4= if ((fcf3*i)>0){fcf3*(1+i)} else {fcf3-(fcf3*i)}
  fcf5= if ((fcf4*i)>0){fcf4*(1+i)} else {fcf4-(fcf4*i)}
  fcf6= if ((fcf5*i)>0){fcf5*(1+i)} else {fcf5-(fcf5*i)}
  }
  row_i = c(fcf1,fcf2,fcf3,fcf4,fcf5,fcf6)
  ffcfs = rbind(ffcfs,row_i)
    }

你能帮我找出问题所在吗?非常感谢!!

标签: rloopsdataframeif-statement

解决方案


推荐阅读