【发布时间】:2021-06-09 12:08:24
【问题描述】:
在 R 的一个项目中,我遇到了这个问题,我真的很困惑:
例如,我有一个张量 T(维度 3x2x2)和一个向量 A
T <- array(c(1,2,3,4,5,6,7,8,9,10,11,12), dim=c(3,2,2), dimnames=list(c("X","Y","Z"),c("1","2"),c("a","b")))
A <- c(NA, "2","b")
我想知道如何使用矢量A 获得T[ ,"2","b"]?我尝试了 T[A] 和其他许多东西一样长,但它似乎不起作用。请注意,A 是一个变量,它很可能变成A <- c(NA, NA,"a"),在这种情况下我们希望有T[ , ,"a"]。
非常感谢您的帮助!
【问题讨论】:
-
我不确定您正在寻找的内容是否可以通过 R 中的标准方式实现。第一种也是最简单的方法是为
[函数创建一个带有参数的列表并使用do.call([, args)(注意由于降价,括号缺少连字符)。但这根本行不通:v <- vector('list', 3); v[[3]] <- 'b'; do.call([, c(list(T), v)))返回一个空矩阵(再次注意尖括号缺少连字符)。唯一的方法似乎是同时包含缺失维度的索引,这使得这种做法非常不切实际并且内存效率低下。