如何用向量的值(即每个值指定一个维度)对多维意外事件 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.frame
和 some.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)]
我有一个包含 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.frame
和 some.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)]