gpt4 book ai didi

r - 类型为 'envir' 的参数无效 'character' -- 在带有晶格直方图的自定义函数中

转载 作者:行者123 更新时间:2023-12-03 07:50:35 24 4
gpt4 key购买 nike

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

使用 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 this myf` 字符串。我该如何解决这个问题或者有更好的方法?

最佳答案

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

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

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

关于r - 类型为 'envir' 的参数无效 'character' -- 在带有晶格直方图的自定义函数中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17663964/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com