【发布时间】:2014-03-04 21:59:42
【问题描述】:
假设您有一个 3 维 4x4x2 数组:
foo <- structure(c(1, 0, 0, 0, 1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 0, 1, 1), .Dim = c(4L, 4L, 2L), .Dimnames = list(c("p1", "p2", "p3", "p4"), c("f1", "f2", "f3", "f4"), c("t1", "t2")))
foo
, , t1
f1 f2 f3 f4
p1 1 1 0 0
p2 0 1 0 0
p3 0 0 0 0
p4 0 0 0 0
, , t2
f1 f2 f3 f4
p1 0 0 0 0
p2 0 1 0 0
p3 0 1 1 1
p4 0 0 0 1
此外,您还有一个矩阵,它是第一维 (p) 的选择器:
bar <- structure(c(1, 1, 2, 2), .Dim = c(4L, 1L), .Dimnames = list(c("p1", "p2", "p3", "p4"), NULL)) [,1]
bar
p1 1
p2 1
p3 2
p4 2
如何创建以下两个数组?
数组 1 有 p1 和 p2 行(由 bar 选择)以及 f1 和 f2 列(因为 p1 和 p2 在 t1 或 t2 中都与 f3 和 f4 无关):
, , t1
f1 f2
p1 1 1
p2 0 1
, , t2
f1 f2
p1 0 0
p2 0 1
数组 2 有 p3 和 p4 行(同样由 bar 选择)和 f2、f3 和 f4 列(因为 p3 和 p4 在 t1 或 t2 中都与 f1 无关)。另外,第三维降为t2:
, , t2
f2 f3 f4
p3 1 1 1
p4 0 0 1
我正在按照子集()、应用()和哪个()的思路思考,但这并没有让我得到任何结果。
这是一个玩具示例。最终代码应该应用于类似于 2 模式网络(模式 p 和 f)随时间 (t) 变化的矩阵。
非常感谢任何帮助。
【问题讨论】: