r - 数据框计算列未正确计算
问题描述
deltas = 10^c(-1:-12)
df = data.frame(deltas)
df <- mutate(df, Num_H11 = -(
Gamma_log_like(optout_gamma$par - c(df$deltas, 0), X)
- 2 * Gamma_log_like(optout_gamma$par, X)
+ Gamma_log_like(optout_gamma$par + c(df$deltas, 0), X)) / (df$deltas^2)
)
在上面的代码中,如果我df$deltas
用单个 delta 值替换它所有计算正确,但是当我使用对数据框列的引用时,结果不正确,我收到以下警告:
longer object length is not a multiple of shorter object lengthlonger object length is not a multiple of shorter object length
我认为这里的问题是 df$deltas 在此代码中被视为向量,而不是使用和评估的每一行中的单个值,但我不知道如何解决这个问题。
解决方案
Gamma_log_like
从问题的描述来看,函数似乎没有向量化。我们可以使用map_dbl
一次将输入传递给Gamma_log_like
函数。
library(dplyr)
df %>%
mutate(Num_H11 = purrr::map_dbl(deltas, ~
-(Gamma_log_like(optout_gamma$par - c(.x, 0), X)
- 2 * Gamma_log_like(optout_gamma$par, X)
+ Gamma_log_like(optout_gamma$par + c(.x, 0), X)) / (.x^2)
))
推荐阅读
- spring - 在运行时禁用更改 Spring Boot 日志记录级别
- java - 多个文本输入和按钮 Java
- javascript - 做一个 API 顶点项目,无法从文本输入中检索值
- java - 无法通过 Java 中的 Selenium 定位父 iframe 中的子 iframe 元素
- sql - 将数据插入oracle sql live
- ruby - 红宝石块哈希输出的差异
- javascript - React 中的 useState() 是什么?
- hadoop - 插入 hive orc 分区表时出现运行时异常
- c# - 如何安装 C# 客户端库,尤其是 Google Cloud Text to Speech?
- amazon-web-services - ValueError:当在 Sagemaker 中使用 Gunicorn、Flask 和 Keras 托管模型时,张量不是该图的元素