gpt4 book ai didi

r - expand.grid 每列都有单独的变量

转载 作者:行者123 更新时间:2023-12-02 06:57:45 27 4
gpt4 key购买 nike

我想在 R 中实现以下 data.frame:

    i1   i2   i3
1 A1 A2 A3
2 No A2 A3
3 A1 No A3
4 No No A3
5 A1 A2 No
6 No A2 No
7 A1 No No
8 No No No

在每一列中,变量可以是连接的字符串 "A" 和列号,也可以是"No"data.frame 应该包含所有可能的组合。

我的想法是使用expand.grid,但我不知道如何动态创建list。或者有更好的方法吗?

expand.grid(list(c("A1", "No"), c("A2", "No"), c("A3", "No")))

最佳答案

我猜你可以创建自己的辅助函数,类似的东西

MyList <- function(n) expand.grid(lapply(paste0("A", seq_len(n)), c, "No"))

然后简单地传递元素的数量(例如,3)

MyList(3)
# Var1 Var2 Var3
# 1 A1 A2 A3
# 2 No A2 A3
# 3 A1 No A3
# 4 No No A3
# 5 A1 A2 No
# 6 No A2 No
# 7 A1 No No
# 8 No No No

或者,您也可以尝试 data.tableCJ 等价物,对于大型 ,它应该比 expand.grid 更有效>n

library(data.table)
DTCJ <- function(n) do.call(CJ, lapply(paste0("A", seq_len(n)), c, "No"))
DTCJ(3) # will return a sorted cross join
# V1 V2 V3
# 1: A1 A2 A3
# 2: A1 A2 No
# 3: A1 No A3
# 4: A1 No No
# 5: No A2 A3
# 6: No A2 No
# 7: No No A3
# 8: No No No

关于r - expand.grid 每列都有单独的变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27881490/

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