“形式参数“ foo”由多个参数匹配“-如何在R中处理呢?

安雅

有时,使用某些参数调用函数会导致错误消息formal argument "foo" matched by multiple actual arguments是否可以打印不明确的实际参数列表?

我问这个的原因是目前与有问题plot的类的对象功能mixEM(通过产生normalmixEMmixtools包中)。它不接受的说法ylim产生上述错误,但是当我尝试使用ylim2(它适用于道路xlab2main2col2等),它说"ylim2" is not a graphical parameter所以我想知道匹配的实际参数是ylim什么?

使用formals(plot.mixEM)无济于事,因为它不包含任何以开头的内容ylim,但是最后它指的...是传递给的图形参数plot但是,对于plot功能而言,ylim将是明确的。R冲突参数列表中获取更准确的错误描述将很有帮助。

UPD:MWE:

library(mixtools)
wait = faithful$waiting
mixmdl = normalmixEM(wait)
plot(mixmdl, which = 2, xlim = c(25, 110), nclass=20)
lines(density(wait), lty = 2, lwd = 2)

这会产生一个错误:

plot(mixmdl, which = 2, xlim = c(25, 110), ylim = c(0, .5), nclass=20)

# Error in hist.default(x, prob = TRUE, main = main2, xlab = xlab2, ylim = c(0, :
# formal argument "ylim" matched by multiple actual arguments`

这根本行不通:

plot(mixmdl, which = 2, xlim = c(25, 110), ylim2 = c(0, .5), nclass=20)

# Warning messages:
# 1: In title(main = main, sub = sub, xlab = xlab, ylab = ylab, ...) :
#   "ylim2" is not a graphical parameter
# 2: In axis(1, ...) : "ylim2" is not a graphical parameter
# 3: In axis(2, ...) : "ylim2" is not a graphical parameter
泰穆·丹尼尔·拉亚拉

您的问题本质上是以下类型:

plot(1:10, rnorm(10), ylim=c(0,1), ylim=c(-1,100))
Error in plot.default(1:10, rnorm(10), ylim = c(0, 1), ylim = c(-1, 100)) : 
  formal argument "ylim" matched by multiple actual arguments

因为您的ylim -definition会在plot.mixEM的以下行中使用“ ...”参数传递给绘图函数

hist(x, prob = TRUE, main = main2, xlab = xlab2, ylim = c(0, maxy), ...)

ylim已定义为以下上限:

maxy <- max(max(a$density), 0.3989 * mix.object$lambda/mix.object$sigma)

请注意,您正在为mixEM类型的对象调用绘图功能查看默认绘图功能plot.default的代码会使您感到困惑,因为实际上您正在调用的plot.mixEM如果在终端中键入plot.mixEM,您将看到其代码,?plot.mixEM也将为您提供帮助。这是在R,其中默认的功能的典型方法functionname.default通过由包中的形式提供的一类特定的函数代替functionname.classname

您有几个选择:

  1. 通过替换原始功能中的硬编码部分来编写自己的plot.mixEM,您只需更改几条直线即可。
  2. plot.mixEM之前绘制窗口,并添加“ add = TRUE ”参数,这意味着我们将不会创建新的绘制窗口,而是将其添加到现有的绘制窗口中。

选项2的工作方式如下:

library(mixtools)
wait = faithful$waiting
mixmdl = normalmixEM(wait)
plot.new()
plot.window(xlim=c(25,110), ylim=c(0,0.5))
plot(mixmdl, which = 2, nclass=20, add = TRUE)
lines(density(wait), lty = 2, lwd = 2)
box(); axis(1); axis(2); title(xlab="Data", ylab="Density")

样例图

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在Java中,什么是形式参数?

警告:形式参数中的`auto`

缺少形式参数

用函数工厂r代替形式参数

Typescript 中动态创建函数的形式参数

形式参数不能是 ruby 中的类变量

多维数组的形式参数

函数错误:参数3与多个形式参数匹配

如何从参数值(R)的数据帧动态创建形式参数

如何修复错误“没有给出与所需形式参数'name'相对应的参数”

Java中形式参数和显式参数是否相同?

Systemverilog DPI 中的实际参数和形式参数有什么区别?

如何获得数字核心和处理器形式参数

如何确定事件处理程序的形式参数的范围以用于Fragment.load承诺解析?

没有给出形式参数的参数

如何将.Rnw文件编织到带有tikzpicture环境的绘图的乳胶中?(错误:形式参数与多个实际参数匹配)

如何在不知道形式参数类型的情况下找到构造函数?

如何获取给定名称和形式参数类型的Method对象?

如何删除使用父指针作为函数形式参数的子类指针?

Java 如何检测某些内容是形式参数还是实例数据?

如何创建复制构造函数(错误:实际和形式参数列表的长度不同)

错误:注释类型声明中的元素不能声明形式参数

在C#中静态方法的形式参数中使用“ this”关键字

具有综合属性的二传手中形式参数的命名

在形式参数列表中自动使用const并通过引用传递的明显后果是什么?

带Void的Java模板形式参数

更改形式参数的对象标识

编译时常量和形式参数

从函数的形式参数访问选择