4

一劳永逸地,我想正确使用 R 术语。然而,我正在阅读的书籍都没有太大帮助,在我看来,作者有时会随意选择名字。所以,我的问题是什么时候使用“属性”、“参数”和“参数”这些名称?

从我目前阅读和理解的内容来看,参数是函数可以作为输入的内容。例如,如果我有一个计算两个值之和的函数,则sum(value1, value2)'value1' 和 'value2' 是函数的参数。

如果我们正在调用一个函数,我们将调用传递给函数参数的值。对于 sum-function 示例,“23”和“48”将是函数参数:

sum(23,48).

所以基本上我们在定义一个函数的时候叫它参数,在我们调用函数的时候我们叫它参数(所以参数是传递给函数的参数)

但是“属性”呢?据我了解,属性相当于方法中的参数(方法是类对象的函数)?

例如,如果我有类似的东西:

heatmap(myData, Colv=NA, Rowv=NA)

... ,'myData' 会是参数还是属性?那么Colv=NARowv=NA呢?heatmap() 不是一个函数,因此括号中的所有内容都应该称为参数吗?

4

4 回答 4

11

假设我们有:

f <- function(x) x + 1
comment(f) <- "my function"
f(3)

论据 我们区分形式论据实际论据。以上x是 的正式论点f。的形式参数的名称由下f式给出:

> names(formals(f))
[1] "x"

函数的实际参数因一次调用而异,在上面的示例中只有一个实际参数3

该函数args可用于显示函数的整个函数签名,包括形式参数和默认参数,如果您正在调试函数,您可以输入match.call()以列出替换实际参数的函数签名。

属性R 对象的属性attributes(f)如下所示:

> attributes(f)
$srcref
function(x) x + 1

$comment
[1] "my function"

有一个例外,即对象的也被视为属性,但不是由上述给出,而是由以下给出class

> class(f)
[1] "function"

参数 有时函数参数被称为参数,或者有时一个是指那些固定为参数的参数,但这往往与数学和统计学有关,而不是 R。

在统计模型中,模型通常是数据和模型参数的函数,通常通过似然来实现。例如,这里:

> lm(demand ~ Time, BOD)

Call:
lm(formula = demand ~ Time, data = BOD)

Coefficients:
(Intercept)         Time  
      8.521        1.721  

截距和时间的线性回归系数(即 8.521 和 1.721)通常被称为模型参数。

正如 Dwin 已经指出的那样,影响 R 中图形的各种值也称为参数,可以通过以下方式显示:

> par()

而其他R图形系统中对应的概念也常被称为参数。

于 2013-03-17T18:27:57.147 回答
5

我想通俗地使用术语“属性”可能是指数据对象的几个特征,但在 R 中有一个非常具体的含义。属性是由函数返回的值:attributesattr. 这些对于将类和名称存储为属性的语言至关重要。attributes<-还有另外两个分配功能:attr<-允许分配附加属性以支持特定类别的目标。

?attributes
?attr

有一个par功能可以设置控制基本图形行为的图形“参数”。因此,这将是 R 特定于 R 的参数使用,可能与使用“参数”略有不同,后者通常应用于函数的形式参数。

?par

这是一个args应用于函数名称或匿名函数的函数,它将返回其参数(作为“闭包”,就像用户在函数定义期间键入一样在控制台上打印)以及它们的默认值。该函数formals将以列表的形式返回相同的“参数”信息。

?args
?formals

我意识到我在与 R 技能非常出色的 Matthew 进行含蓄的争论。与他相反,我认为这在 R 的上下文attributesarguments具有更具体的含义,并且细心的作者将努力使它们的含义分开。如果上下文显然是关于应用函数的讨论,我不会有任何问题来理解使用parameter作为参数同义词的人,因为这是数学中的典型用语。我同意你最后一句话的结论。这些是“论据”,最重要的是不是属性。heatmap 返回的对象的属性是:

 > attributes(hv)  #from first example in ?heatmap
 #$names
 # [1] "rowInd" "colInd" "Rowv"   "Colv"  

但是只有一些参数成为属性,然后才在函数执行期间被分配给返回值之后。

于 2013-03-17T18:04:24.723 回答
0

我不确定 R 与 Python 有多么相似,但我认为大多数术语在不同语言之间应该是一致的。根据我在过去几天阅读和学习的内容,参数基本上是定义函数作为其输入的参数:

my_function <- function (param1, param2){
...
}

如果您使用某些输入值(作为参数传递给函数)调用函数,则称为参数

my_function(arg1, arg2)

属于类的函数称为方法属性可以是与类对象(或所谓的实例)关联的值或方法

因此,我们是否调用某个参数或属性的问题取决于我们调用的是什么:函数或方法。但是如果我们调用函数,我会说 now参数是一个合适的术语heatmap,例如:

heatmap(my_data)
于 2013-03-19T15:12:03.767 回答
0

Attribute : 对象的属性,例如 Person 有String fName, lName;

参数:出现在函数/方法定义中,例如 public void setName( fName , lName )

参数:调用/调用方法/函数时为方法/函数的参数传递的值,例如 myPerson.setName(" Michael ", " Jackson" )

于 2014-05-12T02:42:01.817 回答