Как найти, какие элементы относятся к каким частям диаграммы Венна, используя функцию calculate.overlap в r?

Вывод calculate.overlap не ясен. Есть несколько имен для каждой позиции диаграммы Венна, например: $a1 , $a2 , ... Это становится очень сложным, когда мы рисуем его для пяти списков. Как распознать, какие имена ($a1, $a2,...) связаны с перекрытием каких списков?

library(VennDiagram)

overlap=calculate.overlap(
    x=list(
        "A"=c("a","b","c"),
        "B"=c("a","b","c","d"),
        "C"=c("a","c","d")
    )
)

и это вывод:

$a5
[1] "a" "c"

$a2
[1] "b"

$a4
character(0)

$a6
[1] "d"

$a1
character(0)

$a3
character(0)

$a7
character(0)

Как заменить эти имена на имена из моего списка?

Мой ожидаемый результат:

$A,B,C
[1] "a" "c"

$A,B
[1] "b"

$A,C
character(0)

$B,C
[1] "d"

$A
character(0)

$B
character(0)

$C
character(0)

person Morteza Razavi    schedule 07.04.2019    source источник


Ответы (1)


Здесь есть ответ . Однако я не претендую на его понимание. Общее правило для упорядочения областей на диаграмме Венна состоит в том, чтобы использовать ее двоичное представление. Мой пакет nVennR использует это представление и может дать вам быстрый ответ для любого количества наборов:

> library(nVennR)
> myV <- plotVenn(list("A"=c("a","b","c"), "B"=c("a","b","c","d"), "C"=c("a","c","d")), showPlot = F)
> listVennRegions(myV)
$`0, 1, 1 (B, C)`
[1] "d"

$`1, 1, 0 (A, B)`
[1] "b"

$`1, 1, 1 (A, B, C)`
[1] "a" "c"

> listVennRegions(myV, na.rm = F)
$`0, 0, 0 ()`
[1] NA

$`0, 0, 1 (C)`
[1] NA

$`0, 1, 0 (B)`
[1] NA

$`0, 1, 1 (B, C)`
[1] "d"

$`1, 0, 0 (A)`
[1] NA

$`1, 0, 1 (A, C)`
[1] NA

$`1, 1, 0 (A, B)`
[1] "b"

$`1, 1, 1 (A, B, C)`
[1] "a" "c"

Существует виньетка с более подробной информацией об использовании.

person vqf    schedule 09.04.2019