一劳永逸我想让R术语正确。然而,我所阅读的书籍都没有大的帮助,在我看来,作者有时会任意选择这些名字。所以,我的问题是什么时候使用名称“属性”,“参数”和“参数”?
从我到目前为止所阅读和理解的内容来看,参数是函数可以作为输入的内容。例如,如果我有一个计算两个值之和的函数,sum(value1, value2)
,'value1'和'value2'是函数的参数。
如果我们调用一个函数,我们调用传递给函数参数的值。对于sum-function示例,“23”和“48”将是以下函数参数:
sum(23,48).
所以基本上我们在定义一个函数时调用它参数,并在调用函数时调用它参数(所以参数传递给函数的参数)
但是“属性”呢?据我所知,属性相当于方法中的参数(方法是类对象的函数)?
例如,如果我有类似的东西:
heatmap(myData, Colv=NA, Rowv=NA)
...,'myData'会是参数还是属性?那么Colv=NA
和Rowv=NA
呢? heatmap()不是一个函数,因此括号中的所有内容都应该被称为参数吗?
答案 0 :(得分:11)
假设我们有:
f <- function(x) x + 1
comment(f) <- "my function"
f(3)
参数我们区分形式参数和实际参数。上面的x
是{em>形式参数到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已经pointed out,影响R中图形的各种值也称为参数,可以通过以下方式显示:
> par()
和其他R图形系统中的相应概念通常也称为参数。
答案 1 :(得分:5)
我认为通俗地使用术语“属性”可能指的是数据对象的几个特征,但在R中有一个非常具体的含义。属性是由函数返回的值:attributes
或{ {1}}。这些对于语言至关重要,因为类和名称存储为属性。还有另外两个赋值函数:attr
和attributes<-
,它们允许分配其他属性以支持特定于类的目标。
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; )