gpt4 book ai didi

r - 比较每个组内变量的每个元素

转载 作者:行者123 更新时间:2023-12-04 10:49:43 25 4
gpt4 key购买 nike

考虑 R 中的数据框:

set.seed(36)

y <- runif(10,0,200)
group <- sample(rep(1:2, each=5))
d <- data.frame(y, group)

我想将所有 y 与每个组中的所有 y 进行比较。以下代码可以正确执行此操作:

d_split <- split(d, d$group)
a <- with(d_split[[1]],outer(y, y, "<="))
b <- with(d_split[[2]],outer(y, y, "<="))

但是当我在函数内部执行此操作时,组的数量会发生变化(group 将是该函数的参数),那么我无法以这种方式进行。我怎样才能优雅地编写最后三行代码来比较每个组中的所有 y 和所有 y

最佳答案

要对多个组执行相同的操作,我们可以使用 lapply 并对每个组执行 outer 操作。

lapply(split(d, d$group), function(x) outer(x[["y"]], x[["y"]], "<="))

#$`1`
# [,1] [,2] [,3] [,4] [,5]
#[1,] TRUE TRUE FALSE FALSE FALSE
#[2,] FALSE TRUE FALSE FALSE FALSE
#[3,] TRUE TRUE TRUE FALSE TRUE
#[4,] TRUE TRUE TRUE TRUE TRUE
#[5,] TRUE TRUE FALSE FALSE TRUE

#$`2`
# [,1] [,2] [,3] [,4] [,5]
#[1,] TRUE TRUE FALSE TRUE FALSE
#[2,] FALSE TRUE FALSE TRUE FALSE
#[3,] TRUE TRUE TRUE TRUE TRUE
#[4,] FALSE FALSE FALSE TRUE FALSE
#[5,] TRUE TRUE FALSE TRUE TRUE

关于r - 比较每个组内变量的每个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42549224/

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