Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将参数列表传递给facet_grid()_R_Ggplot2_Facet Grid - Fatal编程技术网

如何将参数列表传递给facet_grid()

如何将参数列表传递给facet_grid(),r,ggplot2,facet-grid,R,Ggplot2,Facet Grid,我试图把一个参数列表传递给 FAXETHGRID()/Cuffe >以赋予一个函数更多的灵活性,但是 FoeToGRID()//C>似乎把列表中的所有东西都看作是变量或其他东西。它没有返回错误,但也没有我预期的行为。以下是我为实现这一目标而编写的代码: facet_plot <- function(facet.args){ ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) + geom_point() + fac

我试图把一个参数列表传递给<代码> FAXETHGRID()/Cuffe >以赋予一个函数更多的灵活性,但是<代码> FoeToGRID()//C>似乎把列表中的所有东西都看作是变量或其他东西。它没有返回错误,但也没有我预期的行为。以下是我为实现这一目标而编写的代码:

facet_plot <- function(facet.args){
  ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) +
    geom_point() +
    facet_grid(paste0('~', facet.args$facets), facet.args[which(names(facet.args) != 'facets')])
}
facet_plot(list(facets = 'Species', scales = 'free_x'))

我希望能够将任意数量的附加参数传递给
facet\u grid()

您只是忘记了命名第二个参数,所以将其传递给
margin
,而不是传递给
scales
(并且需要双括号才能将参数作为向量):


谢谢,是的,我知道我可以在
facet\u grid()
调用中命名第二个参数,但是我在
facet.args
列表中专门命名它,这样我就可以传递任意数量的命名参数(例如
facet.args=list('Species',scales='free\u x',space='free\u x')
)。您需要使用
do。然后致电
。函数中的第一个修改列表的第一个元素以合并~。然后使用
…+do.call(facet.grid,facet.args)
ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) +
        geom_point() +
        facet_grid(~Species, scales = 'free_x')
facet_plot <- function(facet.args){
  ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) +
    geom_point() +
    facet_grid(paste0('~', facet.args$facets), scales= facet.args[[which(names(facet.args) != 'facets')]])
}
facet_plot(list(facets = 'Species', scales = 'free_x'))
facet_plot <- function(facet.args){
  facet.args$facets <- paste0('~', facet.args$facets)
  ggplot(iris, aes(x = Sepal.Length, y = Petal.Length)) +
    geom_point() +
    do.call(facet_grid,facet.args)
}
facet_plot(list(facets = 'Species', scales = 'free_x'))