修改函数内的点(...)

皮埃尔·拉波因特

我正在尝试在自定义函数中修改点(...)。这是我plot2函数的简化示例,该函数在屏幕上显示type="p"带有默认值)的绘图,并使用保存一个svg type="l"当其中一个...绘图选项已存在于函数中时,问题浮出水面在此示例中,"type"由多个实际参数匹配。

plot2 <-function(...){
plot(...) #visible on screen

svg("c:/temp/out.svg") #saved to file
plot(...,type="l")
dev.off()
}

#This works
plot2(1:10)
#This does not work because type is redefined
plot2(1:10, type="o")

我试图将点list放在函数内部并对其进行修改,但plot不接受列表作为输入。

#Does not work
plot2 <-function(...){
plot(...)

dots <<-list(...)
print(dots)
if("type" %in% names(dots)) dots$type="l"
print(dots)

svg("c:/temp/out.svg")
plot(dots)
dev.off()
}
plot2(1:10, type="o")
Error in xy.coords(x, y, xlabel, ylabel, log) : 
  'x' is a list, but does not have components 'x' and 'y'
康拉德·鲁道夫

如果您要转发的修订版...,则需要做两件事:

  1. 捕捉
  2. 通过前进捕获的点do.call

其工作方式如下:

plot2 = function (...) {
    # capture:
    dots = list(...)

    # modify:
    dots$type = 'l'

    # forward call:
    do.call(plot, dots)
}

一般而言,do.call(f, list(‹…›))相当于f(‹…›)

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

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

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

在函数内修改字典

来自分类Dev

修改函数内的变量

来自分类Dev

蟒蛇; 修改函数内的列表

来自分类Dev

在PHP中的函数内修改多维数组

来自分类Dev

修改并返回异步函数内的对象

来自分类Dev

如何修改函数内的字符数组?

来自分类Dev

如何修改对象内的函数输出

来自分类Dev

如何修改函数内的 var 值?

来自分类常见问题

如何在bash中的函数内修改全局变量?

来自分类Dev

使用需要该值的ownerip的函数在循环内修改值

来自分类Dev

在函数本身内修改jQuery验证消息

来自分类Dev

在函数bash中的switch语句内修改空字符串变量

来自分类Dev

Lisp-在一个函数的多个语句内修改局部变量

来自分类Dev

修改函数内的指针(将另一个指针作为参数传递)

来自分类Dev

为什么当我在函数内修改链表时会出现分段错误?

来自分类Dev

修改Lua函数

来自分类Dev

修改内置的Java函数

来自分类Dev

修改$ _的Perl函数

来自分类Dev

在函数内部修改的DataFrame

来自分类Dev

距点的距离内的点

来自分类Dev

无法使用.getBounds()函数(传单)仅显示特定范围(圆)内的点

来自分类Dev

R:在整个数据集上应用函数以查找圆内的点

来自分类Dev

JavaScript-调用函数并导航到HTML锚点内的位置

来自分类Dev

圆内的随机点

来自分类Dev

圆内的随机点

来自分类Dev

图像内的锚点

来自分类Dev

在函数中修改的对象不会在函数外被修改

来自分类Dev

是在C11中未定义来修改函数调用的结果,还是在下一个序列点之后对其进行访问?

来自分类Dev

修改公式中的函数调用