У меня есть два фрейма данных: list1
и list2
>head(list1)
RS_ID CHROM POS REF_ALLELE ALT_ALLELE AF_REF_allsamples
1 rs77599058 1 195680131 C T 0.9996
2 rs73056353 1 195680971 A G 0.9999
3 rs12130880 1 195681419 A T 0.5475
4 rs76457267 1 195681460 A C 0.9993
5 rs10921893 1 195681616 T C 0.5060
6 rs75239769 1 195682022 G A 0.9999
AF_ALT_allsamples AF_REF_onlycontrol AF_ALT_onlycontrol pvalues
1 0.0004 0.9996 0.0004 0.7830
2 0.0001 0.9998 0.0002 0.3740
3 0.4525 0.5442 0.4558 0.0597
4 0.0007 0.9992 0.0008 0.3590
5 0.4940 0.5099 0.4901 0.0302
6 0.0001 1.0000 0.0000 0.5500
>head(list2)
RS_ID CHROM POS REF_ALLELE ALT_ALLELE AF_REF_allsamples
1 rs77599058 1 195680131 C T 0.9996
2 rs73056353 1 195680971 A G 0.9999
3 rs12130880 1 195681419 A T 0.5475
4 rs76457267 1 195681460 A C 0.9993
5 rs10921893 1 195681616 T C 0.5060
6 rs75239769 1 195682022 G A 0.9999
AF_ALT_allsamples AF_REF_onlycontrol AF_ALT_onlycontrol pvalues
1 0.0004 0.9996 0.0004 0.7830
2 0.0001 0.9998 0.0002 0.3740
3 0.4525 0.5442 0.4558 0.0597
4 0.0007 0.9992 0.0008 0.3590
5 0.4940 0.5099 0.4901 0.0302
6 0.0001 1.0000 0.0000 0.5500
> dim(list1)
[1] 235111 10
> dim(list2)
[1] 234520 10
как вы можете видеть с dim()
, они различаются по количеству строк на 591. Теперь я хочу получить новый кадр данных со всеми строками из списка1, которых нет в списке2 (эти 591)
Я старался
> match_diff=list1[!(list1 %in% list2)]
> dim(match_diff)
[1] 235111 10
но, как вы можете видеть, это говорит мне, что все строки из списка1 отличаются от списка2.
Я проверил с помощью str()
, есть ли основная причина, но оба идентичны (происходят из одних и тех же необработанных данных)
Я не могу проверить по одному столбцу, но должен сравнивать каждую строку в целом.
dplyr::anti_join(list1, list2)
- person starja   schedule 30.10.2020