楼主: 簡單℃
10883 16

[问答] 关于R中...参数 [推广有奖]

11
簡單℃ 发表于 2014-5-28 18:46:26
yywan0913 发表于 2014-5-27 13:32
为了方便很多参数的传递啊  plot函数很多参数也是传递过来的其实。

原理就是将plot函数里面的所有参数 ...
继续追问,那到底要不要再plot里面写出来,是不是plot里面写完整,然后打个省略号,然后被传递的里面直接用省略号代替就可以了?(谢谢啦)

12
yywan0913 在职认证  发表于 2014-5-28 22:04:10
簡單℃ 发表于 2014-5-28 18:46
继续追问,那到底要不要再plot里面写出来,是不是plot里面写完整,然后打个省略号,然后被传递的里面直接 ...
plot函数中 自身已经有了   就不需要写出来了。很好理解的吧
是什么给了你自信

13
簡單℃ 发表于 2014-5-29 08:28:31
yywan0913 发表于 2014-5-28 22:04
plot函数中 自身已经有了   就不需要写出来了。很好理解的吧
不用设置?那它自动有参数

14
簡單℃ 发表于 2014-6-5 21:07:11
其实就是将一些原本带有的一些函数的可以设置的一些参数,可以传递给我们设置的函数。这样我们的书写方便了许多。例如:
fun1 <- function(data, graph=TRUE, ...) {
  if (graph)
  plot(data,...)
}
data=data.frame(x=c(1,2,3),y=c(1,2,3))
fun1(data,col="red",type="l")

楼上的举得例子就是一个很好的说明:
plot()函数可以设置很多的参数,例如说是颜色,线的类型等等,此时我们就可以在plot()函数里面添加一个...,然后再在我们自己写的函数里面添加...,此时代表我们设置的函数里也拥有了这些变量。所以这个程序里fun1的参数由两部分组成,一部分是graph,另一部分是plot里面的参数。这样就清晰方便了许多
使用这种方法,主要是将函数体里面的参数可以传递给自己的函数参数

15
马甲1号 发表于 2014-6-6 16:26:49
类似于python的**kwargs, 只不过R比较粗糙, 只有一个..., python里面分为*args和**kwargs


比如:
  1. > test
  2. function(...){
  3. print(list(...))
  4. }
  5. > test2
  6. function(...){
  7. test(...)
  8. }
  9. > test2(a=1,b=2)
  10. $a
  11. [1] 1
  12. $b
  13. [1] 2
复制代码

在Python里面差不多等价的表达则是:
  1. def test(**kwargs):
  2.      ...:     for k in kwargs.keys():
  3.      ...:         print "%s = %s" % (k, kwargs[k])
  4.      ...:         

  5. def test2(**kwargs):
  6.      ...:     test(**kwargs)
  7.      ...:     

  8. test2(a=1,b=2)
  9. a = 1
  10. b = 2
复制代码




归欤!归欤!吾党之小子狂简,斐然成章,不知所以裁之。

16
簡單℃ 发表于 2014-6-9 08:39:53
马甲1号 发表于 2014-6-6 16:26
类似于python的**kwargs, 只不过R比较粗糙, 只有一个..., python里面分为*args和**kwargs
没有学过,r也是刚开始接触的

17
pingguzh 发表于 2016-10-17 16:41:36
r功能不错,python还没接触过

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-30 21:18