Аргументы для `vpList` из пакета` grid` - PullRequest
0 голосов
/ 19 декабря 2018

Это, вероятно, глупо, но как мне динамически создать vpTree как

library(grid)
grid.newpage()
vpTree( viewport(layout=grid.layout(2,2), name = "body"), vpList(viewport(name= "a"), viewport(name ="b"), viewport(name = "c"), viewport(name = "d")))
#> viewport[body]->(viewport[a], viewport[b], viewport[c], viewport[d])

Я не могу передать список видов:

library(grid)
grid.newpage()
n <- c(viewport(name= "a"), viewport(name ="b"), viewport(name = "c"), viewport(name = "d"))
vpTree( viewport(layout=grid.layout(2,2), name = "body"), vpList(n))
#> Error in vpListFromList(vps): only viewports allowed in 'vpList'

Есть идеи?

Ответы [ 2 ]

0 голосов
/ 20 декабря 2018

Первое, что делает vpList, это преобразовывает его аргумент в список.Мне нужно было переписать функцию vpList из сетки с пользовательской функцией, чтобы обойти список от

> vpList
function (...) 
{
    vps <- list(...)
    vpListFromList(vps)
}
<bytecode: 0x000002e14a815a60>
<environment: namespace:grid>

до

vpList <- function (vps) 
{
  grid:::vpListFromList(vps)
}

Вот так:

library(grid)
grid.newpage()

vpListX <- function (vps) 
{
  grid:::vpListFromList(vps)
}


n <- list(viewport(name= "a"), viewport(name ="b"), viewport(name = "c"), viewport(name = "d"))
vpTree( viewport(layout=grid.layout(2,2), name = "body"), vpListX(n))
0 голосов
/ 20 декабря 2018

Способ создания vpList неверен.Попробуйте это -

##Supply same list to variable and then pass it in function

library(grid)
grid.newpage()
n <- vpList(viewport(name= "a"), viewport(name ="b"), viewport(name = "c"), viewport(name = "d"))
vpTree( viewport(layout=grid.layout(2,2), name = "body"), n)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...