Мы могли бы взломать гроб, созданный невидимым выводом draw.triple.venn
.
V <- draw.triple.venn(...) ## catch it in an object
Изучение структуры объекта с использованием str(v)
показывает, что это в основном список, в котором есть метки, определенные в некоторых списках. объекты.
str(V)
# [...]
# $ :List of 11
# ..$ label : chr "26030" <-- here "label"
# ..$ x : 'unit' num 0.2npc
# .. ..- attr(*, "valid.unit")= int 0
# .. ..- attr(*, "unit")= chr "npc"
# ..$ y : 'unit' num 0.739npc
# .. ..- attr(*, "valid.unit")= int 0
# .. ..- attr(*, "unit")= chr "npc"
# ..$ just : chr "centre"
# [...]
Мы можем извлечь их, используя функцию скобок `[[`()
, сохранить их в двух отдельных временных объектах и formatC
их, используя нужный аргумент big.mark=
. После этого мы заменим нетронутый временный объект tmp2
на измененный временный объект tmp1
, где значения чисел c не являются NA
.
tmp1 <- tmp2 <- lapply(V, `[[`, "label")
tmp1[sapply(lapply(V, `[[`, "label"), is.null)] <- NA
tmp1[] <- ifelse(is.na(as.numeric(tmp1)), NA,
formatC(as.numeric(tmp1), format="d", big.mark=","))
tmp2[!is.na(tmp1)] <- tmp1[!is.na(tmp1)]
Наконец, мы заменим метки, модифицированные большими отметками в Гроб используя Map
и скажите R, что class
равен "gList"
.
V <- `class<-`(Map(`[[<-`, V, "label", tmp2), "gList")
Теперь мы можем построить гроб, используя grid.draw
.
grid.newpage()
grid.draw(V)
![enter image description here](https://i.stack.imgur.com/XypwC.png)