arrays - 减去R中的不同维度数组
问题描述
设A
和分别B
是维数[2,3,4]
和的数组[100,2]
。请注意,这2
是通用维度。
C
我想要的答案是一个维度数组,[100,2,3,4]
使得
C[h,i,j,k] = A[i,j,k] - B[h,i]
对于所有人h,i,j,k
。
或者
C[h,i,j,k] = A[i,j,k] + B[h,i]
对于所有人h,i,j,k
。
后一种情况使用以下示例数组更容易检查答案。
例如,
A <- array(NA,c(2,3,4))
for (i in 1:2) {for(j in 1:3){for(k in 1:4){
A[i,j,k] <- i*1000000+j*100000+k*10000
}}}
B <- array(NA,c(100,2))
for (h in 1:100) {for(i in 1:2){B[h,i] <- h*10+i }}
解决方案
这个怎么样
C <- array(NA, c(dim(B)[1], dim(A)))
# Approach 1
for (h in 1 : dim(B)[1])
for(i in 1 : dim(A)[1])
C[h, i,, ] <- A[i,, ] - B[h, i]
# Approach 2
for (h in 1 : dim(B)[1])
C[h,,,] <- sweep(A, 1, B[h, ], "-")
要检查答案是否正确,请为 h、i、j、k 选择一些值
i <- 1; j <- 2; k <- 3; h <- 50
C[h, i, j, k]
#[1] 2338998
A[i,j,k] - B[h,i]
#[1] 2338998
推荐阅读
- organization - 我无法在 ckan 中创建组织和发布数据
- css - 如何将自定义样式添加到 ngx-bootstrap/tooltip
- c++ - 在 MFC 组合框中设置文本而不将其添加到列表中
- php - 将验证失败作为 JSON 返回给客户端
- python - 如何通过将文本文件与使用 python 的用户输入进行比较来查找文本文件中的字符串?
- node.js - Node js Socket Cluster获取从服务器连接的所有套接字(客户端)与套接字ID
- java - 在 sql 中为列使用别名并将其部署在 Tomcat 中的问题
- javascript - 如何在javascript中找到动态行的总和
- python - 字典:用空格替换关键字符
- inappbrowser - 如何使用javascript将会话信息传递给inappbrowser for android?