此问题在此处已有答案:
R - Expand Grid Without Duplicates(2个答案)
Non-redundant version of expand.grid(10个答案)
4天前关闭。
我有一堆1、2和3的组合:
> tidyr::crossing(X1 = c(1,2,3), X2 = c(1,2,3))
# A tibble: 9 × 2
X1 X2
<dbl> <dbl>
1 1 1
2 1 2
3 1 3
4 2 1
5 2 2
6 2 3
7 3 1
8 3 2
9 3 3
在这个例子中,我想过滤掉第4、6、7和8行,因为顺序并不重要,也就是说,(1,2)和(2,1)是一样的。
有没有办法生成这样的组合,或者在已经生成 Dataframe 的情况下过滤掉行?
4条答案
按热度按时间rseugnpd1#
您可以
filter
行,其中X1小于或等于X2:要获得更通用的解决方案,请使用
repeats = TRUE
检查gtools::combinations
:或者使用
is.unsorted
rowwise
:以R为基简化:
vngu2lb82#
我们可以将两列的
min
和max
值组合在一起,然后slice
输出一个条目。这对数字列和字符列都有效。
wd2eg0qa3#
可以重复两次向量并使用
combn
:注意,传入
combn
的重复向量必须是递增的,也就是说,必须设置each = 2
而不是times = 2
;否则,svmlkihl4#
我希望这一招适用于你的情况
它给出了