首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用purrr将参数数据与系数数据连接起来

使用purrr将参数数据与系数数据连接起来
EN

Stack Overflow用户
提问于 2022-04-25 19:48:08
回答 2查看 46关注 0票数 1

我有系数的数据和参数的数据。示例:

代码语言:javascript
复制
coefficients <- data.frame(a   = c(1, 2, 3),
                           b_w = c(3, 4, 5),
                           b_x = c(5, 6, 7))

parameters <- data.frame(w = c(0, 1),
                         x = c(2, 3))

我希望通过对所有系数和参数组合的这两个数据帧乘以这两个数据帧来生成一个数据帧,其中每一列都根据参数数据中的相关行号编号。示例:

代码语言:javascript
复制
output <- data.frame(
  params1 = c(coefficients$a[1] + coefficients$b_w[1]*parameters$w[1] + coefficients$b_x[1]*parameters$x[1],
              coefficients$a[2] + coefficients$b_w[2]*parameters$w[1] + coefficients$b_x[2]*parameters$x[1],
              coefficients$a[3] + coefficients$b_w[3]*parameters$w[1] + coefficients$b_x[3]*parameters$x[1]),
  params2 = c(coefficients$a[1] + coefficients$b_w[1]*parameters$w[2] + coefficients$b_x[1]*parameters$x[2],
              coefficients$a[2] + coefficients$b_w[2]*parameters$w[2] + coefficients$b_x[2]*parameters$x[2],
              coefficients$a[3] + coefficients$b_w[3]*parameters$w[2] + coefficients$b_x[3]*parameters$x[2]
  )            
)

在我看来,使用purrr是可能的,但我不知道如何开始。

EN

回答 2

Stack Overflow用户

发布于 2022-04-25 20:07:04

您可以在这里使用矩阵乘法:

代码语言:javascript
复制
coefs <- as.matrix(coefficients)
params <- as.matrix(parameters)


out <- coefs %*% t(cbind(1, params))
colnames(out) <- paste0("params", 1:2)
out
#     params1 params2
#[1,]      11      19
#[2,]      14      24
#[3,]      17      29
票数 3
EN

Stack Overflow用户

发布于 2022-04-25 21:12:17

@markus提供了一个优雅的基于矩阵的解决方案,但是(根据问题标题)我正在寻找一个purrr-based解决方案。我还没有找到一个,但是我确实有一个tidyverse中的解决方案

代码语言:javascript
复制
library(tidyverse)
parameters %>% 
  mutate(params = row_number()) %>% 
  crossing(coefficients) %>% 
  mutate(output = a + b_w*w + b_x*x) %>% 
  select(params, output) %>% 
  pivot_wider(names_from = params,
              names_prefix = "params",
              values_from = output,
              values_fn = list) %>% 
  unnest(cols = everything())
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72005005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档