2017-11-02 4 views
2

私はeulerrパッケージを使ってベンダイアグラムを作成しようとしています。ベンダイアグラムを作成するために使用したい2つのリストがあります。リストの1つは最初のサブセットです。不思議なことに、eulerrはそのサブセットに固有のリストeulerrを使った正確なVennダイアグラム

b 

内の1つの値が存在することを考えているようです。私は、それがユニークであると考える価値を理解しているようには見えません。

https://pastebin.com/J7tPcfAt

> length(a) 
[1] 3278 

> length(b) 
[1] 1318 

私は期待どおりの結果を得るサブセット間の重複をチェックする場合:

> length(which(a %in% b)) 
[1] 1318 

> length(which((b %in% a))) 
[1] 1318 

> length(which(!(b %in% a))) 
[1] 0 

> length(which(!(a %in% b))) 
[1] 1960 

をしかし、私はベン図をプロットするためにeulerrを使用するとき、私は得る:

library(eulerr) 
fit <- euler(list("A" = a, "B" = b)) 
plot(fit, counts = TRUE) 

enter image description here

注目すべきは、eulerr値の数はAに固有のものであると考えて、私はこの振る舞いを理解するすべてのヘルプをいただければ幸いです

length(which(!(a %in b))) 

を使用して得るものよりも長いです!

+1

あなたはhttps://pastebin.com/ – brettljausn

+0

感謝を介してデータを共有することができます! pastebin経由でリストを含めるように質問を更新しました。 –

答えて

2

この現象の原因はわかりましたが、その理由を説明することはできません。 abの両方に重複値があり、同じ値です。

> a[duplicated(a)] 
[1] "Crybg3" 
> b[duplicated(b)] 
[1] "Crybg3" 

この値を両方のベクトルから削除すると、それは機能します。

a1 <- a[!duplicated(a)] 
b1 <- b[!duplicated(b)] 

fit <- euler(list("A" = a1, "B" = b1)) 
plot(fit, counts = TRUE) 

> fit 
    original fitted residuals region_error 
A  1960 1960   0   0 
B   0  0   0   0 
A&B  1317 1317   0   0 

diag_error: 0 
stress:  0 

enter image description here

+2

私はこのパッケージの著者です。リストの項目には重複が含まれてはいけません。各セットの内容は、セットに属していてもいなくてもよく、セットに2回含めることはできません。次のアップデートでは、関数がこれをチェックすることを確認します。 –

関連する問題