4 parameters attributes arguments r function
一劳永逸我想让R术语正确.然而,我所阅读的书籍都没有大的帮助,在我看来,作者有时会任意选择这些名字.所以,我的问题是什么时候使用名称"属性","参数"和"参数"?
从我到目前为止阅读和理解的内容来看,参数是函数可以作为输入的内容.例如,如果我有一个计算两个值之和的函数sum(value1, value2),'value1'和'value2'是函数的参数.
如果我们调用一个函数,我们调用传递给函数参数的值.对于sum-function示例,"23"和"48"将是以下函数参数:
sum(23,48).
Run Code Online (Sandbox Code Playgroud)
所以基本上我们在定义一个函数时调用它参数,并在调用函数时调用它参数(所以参数传递给函数的参数)
但是"属性"呢?根据我的理解,属性相当于方法中的参数(方法是类对象的函数)?
例如,如果我有类似的东西:
heatmap(myData, Colv=NA, Rowv=NA)
Run Code Online (Sandbox Code Playgroud)
...,'myData'会是参数还是属性?并且怎么样Colv=NA和Rowv=NA?heatmap()不是一个函数,因此括号中的所有内容都应该被称为参数吗?
G. *_*eck 11
假设我们有:
f <- function(x) x + 1
comment(f) <- "my function"
f(3)
Run Code Online (Sandbox Code Playgroud)
参数 我们区分正式论证和实际论证.在上面的x是正规的说法来f.正式论证的名称由下式f给出:
> names(formals(f))
[1] "x"
Run Code Online (Sandbox Code Playgroud)
函数的实际参数因调用而异,在上面的示例中,只有一个实际参数3.
该函数args可用于显示函数的整个函数签名,包括形式参数和默认参数.如果要调试函数,可以输入match.call()列出函数签名,并替换实际参数.
属性 R对象的属性attributes(f)如下所示:
> attributes(f)
$srcref
function(x) x + 1
$comment
[1] "my function"
Run Code Online (Sandbox Code Playgroud)
有一个例外,那就是对象的类也被视为一个属性,但不是由上面给出的,而是由下式给出class:
> class(f)
[1] "function"
Run Code Online (Sandbox Code Playgroud)
参数 有时函数参数被称为参数,或者有时一个参数被引用作为参数固定的那些参数,但这往往与数学和统计学相关,而不是R.
在统计模型中,模型通常是数据的函数,模型参数通常是通过可能性.例如,这里:
> lm(demand ~ Time, BOD)
Call:
lm(formula = demand ~ Time, data = BOD)
Coefficients:
(Intercept) Time
8.521 1.721
Run Code Online (Sandbox Code Playgroud)
截距和时间的线性回归系数(即8.521和1.721)通常被称为模型参数.
正如Dwin已经指出的那样,影响R中图形的各种值也称为参数,可以通过以下方式显示:
> par()
Run Code Online (Sandbox Code Playgroud)
其他R图形系统中的相应概念通常也称为参数.
我认为通俗地使用术语"属性"可能指的是数据对象的几个特征,但在R中有一个非常具体的含义.属性是由函数返回的值:attributes或attr.这些对于语言至关重要,因为类和名称存储为属性.还有另外两个赋值函数:attributes<-和attr<-允许附加属性以支持类具体目标进行分配.
?attributes
?attr
Run Code Online (Sandbox Code Playgroud)
有一个par功能可以设置控制基本图形行为的图形"参数".因此,这将是R特定的参数使用,可能与使用通常应用于函数的形式参数的"参数"略有不同.
?par
Run Code Online (Sandbox Code Playgroud)
该是一个函数args,其应用于函数名称或匿名函数将返回它的参数(如"封闭",它会打印只是作为一个用户将一个函数定义中键入控制台上)的默认值一起.该函数formals将以列表的形式返回相同的"参数"信息.
?args
?formals
Run Code Online (Sandbox Code Playgroud)
我意识到我和马修一起暗示他的R技能非常出色.与他相反,我认为attributes 并且arguments在R的背景下具有更具体的含义,并且谨慎的作者将努力保持其意义分离.parameter如果上下文显然是关于应用函数的讨论,那么理解使用作为参数同义词的人就不会有问题,因为这是数学中的典型用法.我同意你最后一句话的结论.这些是"论据",而且最重要的不是属性.heatmap返回的对象的属性是:
> attributes(hv) #from first example in ?heatmap
#$names
# [1] "rowInd" "colInd" "Rowv" "Colv"
Run Code Online (Sandbox Code Playgroud)
但只有一些参数成为属性,然后才在函数执行期间分配给返回值.