R 从3个列表中选择唯一值

R 从3个列表中选择唯一值,r,R,我想列出所有长度为3的向量的唯一组合,其中向量的每个元素可以在1到9之间 首先,我列出所有这些组合: df <- expand.grid(1:9, 1:9, 1:9) 应该只包含一次 换句话说,如果两行具有相同的编号,并且每个编号的编号相同,则只应包含一次 注意 8或 9只要只出现一次就可以了。根据您的方法和消除重复的想法: df <- expand.grid(1:2, 1:2, 1:2) # Var1 Var2 Var3 # 1 1 1 1 # 2 2

我想列出所有长度为3的向量的唯一组合,其中向量的每个元素可以在1到9之间

首先,我列出所有这些组合:

df <- expand.grid(1:9, 1:9, 1:9)
应该只包含一次

换句话说,如果两行具有相同的编号,并且每个编号的编号相同,则只应包含一次

注意
8

9
只要只出现一次就可以了。

根据您的方法和消除重复的想法:

df <- expand.grid(1:2, 1:2, 1:2)
#   Var1 Var2 Var3
# 1    1    1    1
# 2    2    1    1
# 3    1    2    1
# 4    2    2    1
# 5    1    1    2
# 6    2    1    2
# 7    1    2    2
# 8    2    2    2    
df2 <- unique(t(apply(df, 1, sort))) #class matrix
#      [,1] [,2] [,3]
# [1,]    1    1    1
# [2,]    1    1    2
# [3,]    1    2    2
# [4,]    2    2    2
df2 <- as.data.frame(df2) #class data.frame
df可能是这样的(因为您的数据帧不大,所以不会痛!)


len在您的示例中,应该包括哪一个呢?3个参数组合(9,3,repeats.allowed=TRUE)中的任何一个都不重要
?我相信您可以使用
utils:combn(1:9,3),而不是
expand.grid
一次获取
1:9
的唯一组合
3
。@用户2733997然后重复使用
mtoto
建议的内容。在
的情况下,expand.grid(1:3,1:3,1:3)
不会生成所有情况。缺少哪一个?对于
1:3
,我得到了10个结果,3个结果是相同的,6个结果是相同的,2个结果是相同的,1个结果是不同的。我认为OP希望删除它们,因为它们的顺序不同。看他的例子,1-1-9,9-1-1,1-9-1。
df <- expand.grid(1:2, 1:2, 1:2)
#   Var1 Var2 Var3
# 1    1    1    1
# 2    2    1    1
# 3    1    2    1
# 4    2    2    1
# 5    1    1    2
# 6    2    1    2
# 7    1    2    2
# 8    2    2    2    
df2 <- unique(t(apply(df, 1, sort))) #class matrix
#      [,1] [,2] [,3]
# [1,]    1    1    1
# [2,]    1    1    2
# [3,]    1    2    2
# [4,]    2    2    2
df2 <- as.data.frame(df2) #class data.frame
len <- apply(df,1,function(x) length(unique(x)))
res <- rbind(df[len!=2,], df[unique(apply(df[len==2,],1,prod)),])