如何 select 带有维度名称向量的张量(多维数组)的一部分?

How to select part of a tensor (multidimensional array) with a vector of dimension names?

在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"]

非常感谢您的帮助!

试试这个(有点绕):

A2<-as.list(A)
A2[is.na(A)]<-TRUE
do.call(`[`,c(list(T),A2))
# X  Y  Z 
#10 11 12