r - 循环数据帧行并使用未知参数编写函数
问题描述
我有一个如下图所示的数据框。
Index_1 Index_2 Constant Outcome
1 3 5 1
2 3 6 0
1 4 7 1
我需要为数据框中的每一行写一个方程。这些方程最终将相乘以定义似然函数。我想创建如下所示的东西:
Index_1 Index_2 Constant Outcome Equation
1 3 5 1 m_1 - m_3 + 5 + e_1
2 3 6 0 m_2 - m_3 + 6 + e_2
1 4 7 1 m_1 - m_4 + 7 + e_3
我可以让 R 使用以下代码打印出我需要的方程式:
for (row in 1:nrow(data)) {
mu_a <- (paste("m_",data$Index_1[row],sep=""))
mu_b <- (paste("m_",data$Index_2[row],sep=""))
e_it <- (paste("e_", row,sep=""))
print(paste(mu_a, paste("-",paste(mu_b,paste("+",paste(tradeoffs$d_lnxy[row], paste("+", e_it), sep = " "), sep = " "), sep = " "), sep = " "), sep = " "))
}
但是,这很麻烦,我希望每个 m_j 和 e_t 都是一个对象,因为这些是最大似然估计的参数。我想我需要使用apply,但我正在努力编写我需要的功能。
解决方案
如何首先添加这样的索引:
data$Index <- row.names(data)
然后只需创建一个这样的粘贴方程:
data$Equation <- with(data,paste0("m_", Index_1, " - m_", Index_2, " + ", Constant, " + e_", Index))
你的结果:
Index_1 Index_2 Constant Outcome Index Equation
<dbl> <dbl> <dbl> <dbl> <chr> <chr>
1 1 3 5 1 1 m_1 - m_3 + 5 + e_1
2 2 3 6 0 2 m_2 - m_3 + 6 + e_2
3 1 4 7 1 3 m_1 - m_4 + 7 + e_3
如果您需要分别引用方程中的每个项,您可以使用上面的 paste0() 函数创建任意数量的附加列。即,您可以创建一个名为“mu_a”的列,然后执行 paste0("m_", data$Index1)。然后,您可以使用此列和其他列(每列代表方程中的一个项)执行矢量化操作。
推荐阅读
- reactjs - 在 Android 上使用 React Native Webview 关闭 Socket.io 连接
- spring-boot - 骆驼 3.3 中的肥皂网络服务
- android - 从android内部存储读取文件
- r - 如何计算每个唯一 ID 每天在位置上花费的时间?
- r - 在直方图上使用 ggplot2 指定渐变颜色填充的范围
- python - 使用 Numpy 摆脱 Python 中的 for 循环
- excel - Excel 公式 将数据与前 20 个条目进行比较以进行更改
- python - JupyterLab 不断抛出 Name is not defined 错误
- spring-webflux - Flux.concatMap 中的预取
- javascript - Turbolinks 5 和历史 popstate 事件