如何用向量的值(即每个值指定一个维度)对多维意外事件 table 进行子集化?

How to subset a multidimensional contingency table with values of a vector (i.e. each value specifies a dimension)?

我有一个包含 4 个变量的多维意外事件 table。我需要使用长度为 4 的向量从 table 中获取值。这样做的全部原因是能够获得此类向量的巨大列表,并从偶然性 table 中找到相应的输出。 有什么好的方法可以把c(1,2,3,4)转换成my.table[1,2,3,4]吗? 这是我目前仅使用一个向量作为输入的示例:

v = c(1,2,3,4)
my.table = table(my.data.frame[,c("x","y","z","w")])
eval(str2lang(paste0("my.table[", paste0(v, collapse = ", "), "]")))

这就是我对大量输入向量所做的,在我的例子中是一个数据框:

data.frame.of.inputs = data.frame(x = sample(1:4, 100, T), y = sample(1:4, 100, T), 
                                  z = sample(1:4, 100, T), w = sample(1:4, 100, T))
my.table = table(some.other.data.frame[,c("x","y","z","w")])
apply(data.frame.of.inputs,1,function(rw) 
eval(str2lang(paste0("my.table[", paste0(rw, collapse = ", "), "]"))))

注意:要生成此代码 运行,您可以使用相同的语句初始化 my.data.framesome.other.data.frame

data.frame(x = sample(1:4, 100, T), y = sample(1:4, 100, T), 
           z = sample(1:4, 100, T), w = sample(1:4, 100, T))

我不喜欢我当前的解决方案,不仅因为它很丑,还因为它似乎是做一些简单的事情的很长的路要走。

此外,作为我的一个附带任务:有没有办法通过属性 (my.table)$variable.name?

对 table 进行子集化

来自?"["

When indexing arrays by ‘[’ a single argument ‘i’ can be a matrix with as many columns as there are dimensions of ‘x’; the result is then a vector with elements corresponding to the sets of indices in each row of ‘i’.

使用一个向量:

my.table[rbind(v)]

(即将向量转换为单行矩阵)

多个输入:

my.table[as.matrix(data.frame.of.inputs)]