r - 循环遍历数据框并导出数据
问题描述
我用 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)
解决方案
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_T
是growth
它们是标量。循环的每次迭代都会覆盖以前的值。
我分享了@RonalShah 对growth = (1 * fb_T)
.
推荐阅读
- java - 静态同步方法中的 ConcurrentModificationError
- python - 在matplotlib中混合多个波斯语(波斯语)和英文文本?
- regression - Correlationmatrix 与 OLS Statsmodels(差 R² 和相关系数)
- laravel - Videojs 私有 laravel 存储 + vue.js
- node.js - Mongodb仲裁节点不启动
- amazon-web-services - 从 AWS Api 网关代理到家庭服务器时如何防止重定向?
- linux - 通过弹出窗口中的字符串识别弹出窗口ID?
- spring-boot - 如何验证 sprng kafka producer 是否成功发送消息?
- c# - 该请求匹配多个端点,但为什么呢?
- c++ - 从文件将二进制转换为十进制