r - 如何在 R 中计算这个总和?
问题描述
如果我们有一个数据集,其中 $x_{ij}$ 的大小为 4 x 3 矩阵,i=1,2,3,4 并且 j=1,2,3。y_i 是一个向量,而 z_{ij} 也是一个 4 x 3 矩阵。
a1=c(1,0,1, 2)
a2=c(2,2,1, 2)
a3=c(1,3,2,3)
a4=c(-1,0,-1,-1)
x <- cbind(a1, a2, a3)
y <- c(1,2,3,2)
z<-cbind(a2, a3,a4)
解决方案
我认为这会做到:
z1 <- z[1, ]
vapply(
seq_along(z1), function(j)
drop((y - x[, -j] %*% z1[-j])) %*% x[, j],
numeric(1))
#R> [1] 10 15 -15
一个 for 循环版本是:
out <- numeric(3)
for(j in 1:3)
for(i in 1:4){
f1 <- y[i]
for(k in setdiff(1:3, j))
f1 <- f1 - x[i, k] * z[1, k]
out[j] <- out[j] + f1 * x[i, j]
}
out
#R> [1] 10 15 -15
推荐阅读
- typescript - 如何告诉打字稿在不解析的情况下在js中逐字包含一行
- vue.js - Quasar(VueX)循环内更新状态
- python - 我的 user_id 配置文件数据库为空,我如何在 user_id 中插入值?
- mysql - MySQL - 按两个条件进行 SQL 搜索
- javascript - 从参数中使用相同名称的函数访问 ES 模块变量
- botframework - 调用 Direct Line API 生成令牌时出现“Site Missing”错误
- oracle - 如何从大型 sql 文件中导入数据库 Oracle
- python - 如何检测特定对象 ID 的性别?
- dependencies - OSError caffe2_detectron_ops_gpu PyTorch
- r - Plotly:如何使用 R 和 Shiny 为子图创建单个 y 轴标签?