gpt4 book ai didi

r - 测试一个因素是否嵌套在另一个因素中

转载 作者:行者123 更新时间:2023-12-04 10:35:01 24 4
gpt4 key购买 nike

有没有一种简单的方法可以确定一个向量是否嵌套在另一个向量中?换句话说,在下面的示例中,bar 的每个值都与 foo 的一个且只有一个值关联,因此 bar 嵌套在foo.

data.frame(foo=rep(seq(4), each=4), bar=rep(seq(8), each=2))

澄清一下,这是期望的结果:

foo <- rep(seq(4), each=4)
bar <- rep(seq(8), each=2)
qux <- rep(seq(8), times=2)
# using a fake operator for illustration:
bar %is_nested_in% foo # should return TRUE
qux %is_nested_in% foo # should return FALSE

最佳答案

假设你有两个因子fg,想知道g是否嵌套在f中.

方法一:给喜欢线性代数的人

考虑两个因素的设计矩阵:

Xf <- model.matrix(~ f + 0)
Xg <- model.matrix(~ g + 0)

如果g嵌套在f中,那么Xf的列空间一定是Xg的列空间的子空间。换句话说,对于 Xf 列的任意线性组合:y = Xf %*% bf,等式 Xg %*% bg = y 可以准确地解决。

y <- Xf %*% rnorm(ncol(Xf))  ## some random linear combination on `Xf`'s columns
c(crossprod(round(.lm.fit(Xg, y)$residuals, 8))) ## least squares residuals
## if this is 0, you have nesting.

方法二:给喜欢统计的人

我们检查列联表:

M <- table(f, g)

如果所有列只有一个非零条目,则 g 嵌套在 f 中。换句话说:

all(colSums(M > 0L) == 1L)
## `TRUE` if you have nesting

点评:对于任何方法,您都可以轻松地将代码压缩到一行。

关于r - 测试一个因素是否嵌套在另一个因素中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41400392/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com