R 如何在不考虑顺序的情况下生成所有可能的向量组合?
在数据帧中,我有一列包含字符串。假设它看起来像这样:R 如何在不考虑顺序的情况下生成所有可能的向量组合?,r,R,在数据帧中,我有一列包含字符串。假设它看起来像这样: x <- unique(df[,1]) x "A" "A" "B" "B" "B" "C" 但这仍然会留下一个问题,即具有相同字符串组合的行的顺序不同。我怎样才能摆脱这个呢?我想你在找combn: x <- c("A", "A", "B", "B", "B", "C") combn(x,2) 如果在x中只需要唯一的值(如果是unique()调用的结果,我不知道为什么在x中有重复的值): 在utils包中有combn功能: t(
x <- unique(df[,1])
x
"A" "A" "B" "B" "B" "C"
但这仍然会留下一个问题,即具有相同字符串组合的行的顺序不同。我怎样才能摆脱这个呢?我想你在找
combn
:
x <- c("A", "A", "B", "B", "B", "C")
combn(x,2)
如果在x
中只需要唯一的值(如果是unique()
调用的结果,我不知道为什么在x
中有重复的值):
在
utils
包中有combn
功能:
t(combn(LETTERS[1:3],2))
# [,1] [,2]
# [1,] "A" "B"
# [2,] "A" "C"
# [3,] "B" "C"
我有点困惑,为什么你的
x
有重复的值。x
不可能是你所展示的;如果将unique()
应用到df[,1]
中,它们将是唯一的,不是吗?没错,我把它与打印数据框列本身的内容混为一谈了x
当然不包含重复项。谢谢,我不知道combn
。我接受了BenBarnes的答案,因为它给出了我想要的结果,但显然你也回答了我的问题。
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [,14] [,15]
[1,] "A" "A" "A" "A" "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" "B"
[2,] "A" "B" "B" "B" "C" "B" "B" "B" "C" "B" "B" "C" "B" "C" "C"
> combn(unique(x),2)
[,1] [,2] [,3]
[1,] "A" "A" "B"
[2,] "B" "C" "C"
t(combn(LETTERS[1:3],2))
# [,1] [,2]
# [1,] "A" "B"
# [2,] "A" "C"
# [3,] "B" "C"