首页 > 解决方案 > 循环遍历数据框并导出数据

问题描述

我用 x 和 Temp 创建了一个数据框 (df)。

我需要求解两个方程(fb_T = 1.09^Temp 和增长 = (1 * fb_T)),其中 fb_T 是从数据帧的每一行循环遍历 Temp 计算的。然后使用每个 fb_T 来计算增长。

理想情况下,我想用 x、Temp 和相应的 fb_T 和增长创建一个数据框,以便我可以绘制它。

我尝试过(我在 seq_len(nrow(df))) 但对于 fb_T,我将第一个值设为 0,然后其余的都是 NA,对于增长,我只得到一个值。

如何让 fb_T 循环遍历数据帧中的 Temp 并让 fb_T 的输出循环遍历增长方程?

 x <- c(1, 2, 3, 4, 5)
 Temp <- c(10, 8, 6, 5, 2)
 df <- cbind(x, Temp)

 init <- rep(NA_real_, n_steps+1)
 init[1] <- 0.
 fbt <- init

 for(i in seq_len(nrow(df))){
   #for(i in 1:nrow(df)) {


    fb_T = 1.09^Temp[i]
    growth = (1 * fb_T)
 }

fbt
growth

我手动计算和预期的输出:

 x <- c(1, 2, 3, 4, 5)
 Temp <- c(10, 8, 6, 5, 2)
 fb_T <- c(2.367364, 1.992563, 1.6771, 1.538624, 1.1881)
 growth <- c(2.367364, 1.992563, 1.6771, 1.538624, 1.1881)
 df <- cbind(x, Temp, fb_T, growth)

标签: rfor-loop

解决方案


d <- tibble(x=c(1, 2, 3, 4, 5), Temp=c(10, 8, 6, 5, 2))
d %>% mutate(fb_T=1.09**Temp, Growth=fb_T)
d
# A tibble: 5 x 4
      x  Temp  fb_T Growth
  <dbl> <dbl> <dbl>  <dbl>
1     1    10  2.37   2.37
2     2     8  1.99   1.99
3     3     6  1.68   1.68
4     4     5  1.54   1.54
5     5     2  1.19   1.19

您在代码中只获得一个值的原因fb_Tgrowth它们是标量。循环的每次迭代都会覆盖以前的值。

我分享了@RonalShah 对growth = (1 * fb_T).


推荐阅读