这可能有点傻,但是我如何动态地创建一个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'
有什么想法吗?
发布于 2018-12-20 23:37:21
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))
发布于 2018-12-20 05:05:02
您创建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)
https://stackoverflow.com/questions/53858896
复制相似问题