我正在尝试使用R来研究蛋白质序列同源性,并且我希望通过数据框寻找相同的位置和字母对。数据看起来类似于下面的框架:
Letter <- c("A", "B", "C", "D", "D", "E", "G", "L")
Position <- c(1, 2, 3, 4, 4, 5, 6, 7)
data.set <- cbind(Position, Letter)
哪个收益率:
Position Letter
[1,] "1" "A"
[2,] "2" "B"
[3,] "3" "C"
[4,] "4" "D"
[5,] "4" "D"
[6,] "5" "E"
[7,] "6" "G"
[8,] "7" "L"
我想循环查找所有相同的观察结果(在这种情况下,观察4和5),但我很难找到最好的方法。
我希望结果数据框看起来像:
Position Letter
[1,] "4" "D"
[2,] "4" "D"
我试图这样做的方式最终产生了这个代码,但不幸的是它返回一个TRUE值,因为我意识到我正在比较两个相同的数据帧:
> identical(data.set[1:nrow(data.set),1:2], data.set[1:nrow(data.set),1:2])
[1] TRUE
我不确定使用same()函数循环是否是最好的方法?我确信这是一个我缺少的更优雅的解决方案。
感谢您的帮助!
答案 0 :(得分:1)
尝试unique
功能:
unique(data.set)
...
答案 1 :(得分:0)
您可以使用duplicated
fromLast
向两个方向前进:
data.set[(duplicated(data.set)==T | duplicated(data.set, fromLast = TRUE) == T),]
# Position Letter
#[1,] "4" "D"
#[2,] "4" "D"