我想删除重复的行,例如如果 A==B 和 B==A,我只想保留其中之一。我有一个如下所示的数据框:
class A { public: typedef int type; static const int val { 1 }; };
class B { public: typedef float type; static const int val { 2 }; };
template<typename T> class C {};
template<int I> class D {};
template<typename T> class X {
T::type v; // OK
T::type f(T::type arg) { return arg; } // OK
T::type g(double arg) { return static_cast<T::type>(arg); } // OK
// C<T::type> c1; // error
D<T::val> d; // OK (as has always been)
C<typename T::type> c2; // OK (old style)
typedef T::type mytype; // OK
using mytypeagain = T::type; // OK
C<mytype> c3; // OK (via typedef / using)
};
X<A> xa;
X<B> xb;
我的预期输出是这样的:
|A |B |
|-------|-------|
|A1CF |APOBEC1|
|A1CF |KHSRP |
|A1CF |SYNCRIP|
|APOBEC1|A1CF |
|SYNCRIP|A1CF |
我已经尝试过这些,但它不起作用。
|A |B |
|-------|-------|
|A1CF |APOBEC1|
|A1CF |KHSRP |
|A1CF |SYNCRIP|
答案 0 :(得分:1)
一种选择是使用最少/最多的技巧,然后删除重复项:
library(SparkR)
df <- unique(cbind(least(df$A, df$B), greatest(df$A, df$B)))
这是上述内容的基本 R 版本:
df <- unique(cbind(ifelse(df$A < df$B, df$A, df$B),
ifelse(df$A >= df$B, df$A, df$B)))