r - 将函数应用于数据框中的每一行并将结果存储在新列中
问题描述
我有以下代码在 R 中创建一个数据框。然后我创建一个值为 0 的响应变量 y。我希望函数结果从 A、B、C 和 D 列中的每一行传递值,然后根据存储在 d 中的方程返回存储在 y 列中的结果结果。
有谁可以帮我离开这里吗?
# Create Design Matrix
A <- rep(c(-1, 1), 8)
B <- rep(rep(c(-1, 1), each=2), 4)
C <- rep(rep(c(-1, 1), each=4), 2)
D <- rep(c(-1, 1), each=8)
desMat <- cbind(A,B,C,D)
desMat
y <- 0 #Response Variable
data <- data.frame(desMat,y)
Outcome <- function(w,x,y,z){
#Linear model
set.seed(1456)
e <- rnorm(1,0,3)
d <- 8.3+(5.2*w)-(8.4*x)-(1.8*z)+(7.5*w*z)-(2.1*x*z)+e
return(d)
}
解决方案
您可以使用 tidyverse 中的软件包来做到这一点:
##I converted your matrix to a tibble, but you can always convert back to a matrix by using as.matrix
##Load tidyverse packages
library(tidyverse)
# Create Design Matrix
A <- rep(c(-1, 1), 8)
B <- rep(rep(c(-1, 1), each=2), 4)
C <- rep(rep(c(-1, 1), each=4), 2)
D <- rep(c(-1, 1), each=8)
desMat <- cbind(A,B,C,D)
desMat
y <- 0 #Response Variable
data <- data.frame(desMat,y)
Outcome <- function(w,x,y,z){
#Linear model
set.seed(1456)
e <- rnorm(1,0,3)
d <- 8.3+(5.2*w)-(8.4*x)-(1.8*z)+(7.5*w*z)-(2.1*x*z)+e
return(d)
}
##Then run the following code
desMat_new <- desMat %>% as_tibble() %>% mutate(row_result = Outcome(A, B, C, D))
##if you need the result to be a matrix
desMat_new <- desMat %>% as_tibble() %>% mutate(row_result = Outcome(A, B, C, D)) %>% as.matrix()
推荐阅读
- javascript - Typescript/Node 文件自动检测来自其他文件的未导出变量
- claims-based-identity - 使用 Microsoft Identity 从 Web Api 中的扩展 UserClaim 表中获取声明
- bash - Bash 三元运算符可以用来给多个变量赋值吗?
- node.js - 在 docker 中运行的 Node.js WebsocketServer (wss/ws) 显示与代码 1006 的连接断开(随机)
- r - 抑制图例中的元素
- linux - /proc/interrupts - 在 c 中读取显示没有 IPI
- python - 为独立条目填充 NumPy 数组的有效方法?
- excel - Excel VBA - 每个唯一组的 N 个随机记录
- postgresql - 如何编写 PostgreSQL 存储过程来查找和终止空闲查询?
- javascript - 使用 chart.js 的实时滚动图表