【问题标题】:Why is (...) useful in R? [duplicate]为什么 (...) 在 R 中很有用? [复制]
【发布时间】:2015-04-08 11:26:32
【问题描述】:

我试图理解R 中的... 和/或(...)。我知道这以某种方式用于向函数输入未知或多个参数,但是这在什么时候是必要的和/或有用的?我搜索了rdocumentation,但什么也没找到。在R Language Definition 中,它是用非常抽象的术语定义的。

因此我问:为什么... 有用?它只是不是草率的编码吗?显式传递参数不是更好吗?

【问题讨论】:

  • 在将参数传递给其他一些参数丰富的函数时很有用(例如plot
  • @rawr 不,这不是同一个问题。这个问题问的是“为什么”而不是“如何”。
  • 标题可能不同,但如果要实际阅读,就会发现它们确实是重复的。如果您想成为技术专家,那么问为什么某些东西有用是一个意见问题,无论如何都应该关闭。任你挑球先生
  • 你显然对这个设计问题有自己的看法,而且它恰好与大多数 R 用户的看法不同。应关闭对火焰战争的邀请。
  • @histelheim 采用一个实际上将另一个函数作为参数的函数,例如lapply 在这里不可能提供所有参数,因为它取决于作为参数传递的函数。此外,当参数列出多个函数的相似性时,它还可以使文档不那么冗长并且更容易解析。

标签: r


【解决方案1】:

省略号使您可以定义具有未知数量的参数/参数的函数。

对于 clist 等用户给出的参数数量未知的函数来说是必需的。

如果您在 R 控制台中输入 clist,您会看到这两个函数都使用 ... 作为参数。

在这两种情况下,很难显式传递参数,因为用户可以根据需要传递任意数量的参数。

您可以查看this post 了解更多示例

【讨论】:

  • 这不能回答问题 - 您写的大部分内容已经在问题中说明。这什么时候有用?你能举个例子说明你什么时候不能显式传递参数吗?
  • 我在帖子里写过,就像函数c一样,当你创建一个像c(1,2,3,4,5)这样大小为5的向量时,你传递了5个参数,大小为 4,如 c(1,2,3,4),传递 4 个参数,因此编写该函数的唯一方法是使用省略号,它允许您根据需要传递尽可能多的参数
【解决方案2】:

它被称为varargsvariadic arguments 的缩写)。

什么时候需要这样做?

这不是绝对必要的,也不是天生草率的。 any 语言中 varargs 的“非草率”替代方法是将数组或列表作为单个变量传递。所以 varargs 只是事物集合之上的语法糖。

[什么时候]有用?

任何时候您想在调用函数时节省一些击键并隐式构造一个列表。

显式传递参数不是更好吗?

视情况而定。你的标准是什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-06-30
    • 1970-01-01
    • 2015-05-17
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 2013-11-16
    相关资源
    最近更新 更多