2017-11-02 4 views
2

나는 Vul 다이어그램을 만들기 위해 eulerr 패키지를 사용하려고합니다. 저는 Venn 다이어그램을 만들기 위해 사용하고 싶은 2 개의리스트를 가지고 있습니다. 목록 중 1 개는 첫 번째 하위 집합입니다. 이상하게도, eulerr는 목록에 하나의 가치가 있다고 생각하는 것 같습니다. 해당 하위 집합에 고유 한 값이 있다고 생각하는 것 같습니다.eulerr을 사용하여 정확한 Venn 다이어그램

b 

나는 그것이 어떤 가치가 있다고 생각하는지 알 수 없다.

https://pastebin.com/J7tPcfAt

> length(a) 
[1] 3278 

> length(b) 
[1] 1318 

내가 예상 결과를 얻을 집합 사이에 중복을 검사 할 때 : 나는 벤 다이어그램을 플롯 eulerr를 사용할 때

> 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 

는하지만 얻을 :

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

enter image description here

내가 크게 감상 할 수

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

이 동작을 이해 어떤 도움을 사용하여 얻을 것을

특히, 생각 eulerr A와 고유 값의 수보다 하나 이상입니다!

+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

나는이 패키지의 저자입니다. 목록의 항목에는 목록이 중복되어서는 안됩니다. 각 집합의 내용은 집합에 속하거나 집합에 속할 수 있고 집합에 두 번 포함될 수없는 사람으로 생각하십시오. 다음 업데이트에서는 함수가이 점을 검사하는지 확인할 것입니다. –