对R术语感到困惑:属性,参数和参数

时间:2013-03-17 17:30:14

标签: r function parameters attributes arguments

一劳永逸我想让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 个答案:

答案 0 :(得分:11)

假设我们有:

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

参数我们区分形式参数实际参数。上面的x是{em>形式参数到ff的正式论据的名称由:

给出
> 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已经pointed out,影响R中图形的各种值也称为参数,可以通过以下方式显示:

> par()

和其他R图形系统中的相应概念通常也称为参数。

答案 1 :(得分:5)

我认为通俗地使用术语“属性”可能指的是数据对象的几个特征,但在R中有一个非常具体的含义。属性是由函数返回的值:attributes或{ {1}}。这些对于语言至关重要,因为类和名称存储为属性。还有另外两个赋值函数:attrattributes<-,它们允许分配其他属性以支持特定于类的目标。

attr<-

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

par

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

formals

我意识到我与Matthew暗中争论他的R技能非常出色。与他相反,我认为?args ?formals attributes在R的背景下具有更具体的含义,并且谨慎的作者将努力保持其意义分离。如果上下文显然是对应用函数的讨论,那么理解使用arguments作为参数同义词的人就不会有问题,因为这是数学中的典型用法。我同意你最后一句话的结论。这些是“论据”,而且最重要的不是属性。 heatmap返回的对象的属性是:

parameter

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

答案 2 :(得分:0)

我不确定R与Python类似,但我认为大多数术语应该在不同语言中保持一致。根据我在过去几天所阅读和学习的内容,参数基本上是一个函数在您定义时的输入

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

如果要调用具有某些输入值的函数(作为参数传递给函数),则称为参数

my_function(arg1, arg2)

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

所以我们调用某个参数或属性的问题取决于我们调用的内容:函数或方法。但我想说,如果我们调用heatmap函数,参数是一个合适的术语,例如:

heatmap(my_data)

答案 3 :(得分:0)

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

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

参数:在调用/调用方法/函数时为方法/函数的参数传递的值,例如myPerson.setName(&#34; Michael &#34;,&#34; Jackson&#34;