2016-10-05 81 views
1

我有两个不同的行号和列号的矩阵。我可以比较行名并仅提取表2中不在表1中的行吗? 即比较2表格和仅提取表格2唯一的行

a1 <- data.frame(a = 1:5, b=letters[1:5]) 
a2 <- data.frame(a = 1:3, b=letters[1:3], c=letters[4:6]) 
a3 <- as.matrix(a1) 
a4 <- as.matrix (a2) 
row.names(a3) <- c("chr1:981994", "chr1:1025751", "chr1:1026919", "chr1:1118414", "chr1:1119410") 
row.names(a4) <- c("chr1:1118414", "chr1:1119410", "chr1:1216877") 

所以后来比较两个并创建一个新的矩阵 从表2中的最后一排,因为它独特的表2

回答

1

我们可以使用%in%行名称之间比较

a4[!row.names(a4) %in% row.names(a3), , drop=FALSE] 
#    a b c 
#chr1:1216877 "3" "c" "f" 
+0

非常感谢你akrun!我一直在尝试约四个小时来做​​到这一点:) – Zoe

+0

@Zoe没问题。很高兴帮助你。请同时阅读[this](http://stackoverflow.com/help/someone-answers) – akrun

+0

你能解释一下,,drop = FALSE是什么意思? – Zoe