【问题标题】:What is the difference between sqrt(9) and sqrt(x=9) in R? [duplicate]R中的sqrt(9)和sqrt(x = 9)有什么区别? [复制]
【发布时间】:2020-04-03 12:40:17
【问题描述】:

我刚开始学习 R,对函数的输入有点困惑。

我看到例如 sqrt(9)sqrt(x=9) 可以互换使用,我不明白您为什么要包含 x=

【问题讨论】:

  • R 函数可以按位置或按名称接受参数。第一个参数的名称是x。因此,您可以提供x 作为第一个参数,或者提供x = 。在这种情况下,这并不重要,但对于其他函数,命名您传递的参数对于可读性很有用。
  • 如果您是 R 新手,我建议您为所有参数命名。几年后,你会像我们其他人一样开始变得懒惰,并省略繁琐的参数命名业务。安全第一。 ;)
  • @duckmayr,作为答案发布?
  • @BenBolker 我愿意,但这肯定是重复的吗?我将尝试找到(几乎肯定存在的)重复项
  • @BenBolker 猜我错了! (或者至少不容易找到重复项)。将添加为答案

标签: r


【解决方案1】:

将参数传递给 R 中的函数时,您可以使用以下两种方式之一:

  1. 按位置
  2. 按名称

对于sqrt(),这无关紧要;只有一个论点,x。因此,让我们考虑一个具有多个参数的函数,这可能很重要:

foo <- function(a, b) a^b
a <- 2
b <- 3
foo(a, b)
# [1] 8
foo(b, a)
# [1] 9
foo(b = b, a = a)
# [1] 8

这说明了一个为什么你可能想要命名你的参数而不是仅仅通过位置;它确保您始终为您认为的每个论点赋予价值。命名参数的另一个原因是为了那些阅读你的代码的人可能不知道你正在使用的函数的参数是什么的可读性。

出于这些原因,有些人会说,即使在似乎没有必要的情况下(例如sqrt()),命名参数也是一种好习惯。虽然我通常在通过名称而不是位置向函数传递参数方面犯错,但 IMO 对于sqrt() 之类的东西来说有点过头了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-26
    • 1970-01-01
    • 1970-01-01
    • 2023-01-30
    • 2017-09-29
    • 1970-01-01
    • 1970-01-01
    • 2015-01-19
    相关资源
    最近更新 更多