1

我想要一个带有数据名称(dat)、因子(myfactor)、变量名称(myvar)等参数的函数来动态生成直方图(必须使用点阵图)。

以 IRIS 为例:

data(iris)



my_histogram <- function(myvar,myfactor,dat){
    listofparam <- c(myvar,myfactor)
    myf <- as.formula(paste("~",paste(listofparam,collapse="|")))
    histogram(myf,
              data=dat,
              main=bquote(paste(.(myvar),"distribution by",.(myfactor),seq=" ")))}



my_histogram("Sepal.Length","Species","iris") 

正如一些帖子所示,我也尝试了 do.call:

my_histogram <- function(myvar,myfactor,dat){
listofparam <- c(myvar,myfactor)
myf <- as.formula(paste("~",paste(listofparam,collapse="|")))
p <- do.call("histogram",
   args = list(myf,
   data=dat))
print(p)

}

my_histogram("Sepal.Length","Species","iris") 

但是出现错误:invalid 'envir' argument of type 'character'. I think the program doesn't know where to look for thismyf`字符串。我该如何解决这个问题或有更好的方法?

4

1 回答 1

2

对此的读者应该知道,这个问题已经从早期版本完全变异,并且不再与这个答案真正匹配。新问题的答案出现在评论中。

没有名为 的对象Sepal.Length。(所以 R 甚至在它被调用之前就创建了一个错误my_function。)只有一个列名,它需要被引用才能将它传递给一个函数。(无法创建数据对象,因为该 URL 无法传递数据。为什么不使用 iris 数据对象的内置副本?

您还需要从myvar和构建一个公式fac。公式是表达式,无需评估其标记即可进行解析。您需要在函数中构建一个如下所示的公式:~Sepal.Length|Species然后将其传递给 histogram 调用。咨询?as.formula

于 2013-07-15T21:38:12.873 回答