4

とにかく、私はRの用語を正しく理解したいと思っています。しかし、私が読んでいた本はどれも大した助けにはならず、著者は時々恣意的に名前を選んだようです。それで、私の質問は、「属性」、「パラメーター」、および「引数」という名前が正確にいつ使用されるのかということです。

私がこれまで読んで理解したことから、パラメーターは関数が入力として受け取ることができるものです。たとえば、2つの値の合計を計算する関数がある場合sum(value1, value2)、「value1」と「value2」は関数のパラメーターです。

関数を呼び出す場合は、関数の引数に渡された値を呼び出します。合計関数の例では、「23」と「48」が次の関数の引数になります。

sum(23,48).

したがって、基本的には、関数を定義するときにパラメーターと呼び、関数を呼び出すときに引数と呼びます(したがって、引数は関数のパラメーターに渡されます)

しかし、「属性」についてはどうでしょうか。私が理解していることから、属性はメソッドのパラメーターと同等です(そしてメソッドはクラスオブジェクトの関数です)?

たとえば、次のようなものがある場合:

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

...、'myData'は引数または属性になりますか?そして、どうColv=NAですかRowv=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"

関数への実際の引数は呼び出しごとに異なり、上記の例では1つの実際の引数があります3

この関数argsを使用して、正式な引数とデフォルトの引数を含む関数の関数シグネチャ全体を表示できます。関数をデバッグしている場合はmatch.call()、実際の引数に置き換えて関数シグネチャを一覧表示するために入力できます。

属性Rオブジェクトの属性attributes(f)は、次のように指定されます。

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

$comment
[1] "my function"

例外が1つあります。それは、オブジェクトのクラスも属性と見なされますが、上記ではなく、次のように指定されること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には非常に特殊な意味があります。属性は、関数:attributesまたは。のいずれかによって返される値attrです。これらは、クラスと名前が属性として格納されるという点で、言語にとって重要です。他に2つの割り当て関数がありattributes<-ますattr<-。クラス固有の目的をサポートするために追加の属性を割り当てることができます。

?attributes
?attr

par基本的なグラフィックスの動作を制御するグラフィカルな「パラメータ」を設定する関数があります。したがって、これはR固有のパラメーターの使用であり、関数の正式な引数に一般的に適用される「引数」の使用とはわずかに異なる場合があります。

?par

これは、args関数名または無名関数に適用された関数であり、引数を(ユーザーが関数定義中に入力するのと同じようにコンソールに出力される「クロージャ」として)デフォルト値とともに返します。この関数formalsは、同じ「引数」情報をリストの形式で返します。

?args
?formals

Rスキルが優れているマシューと暗黙のうちに議論していることに気づきました。彼とは反対に、Rの文脈ではより具体的な意味があり、注意深い作者はそれらの意味を分離するように努力するとattributes 思います。文脈が明らかに関数の適用についての議論である場合、それが数学の典型的な用語であるため、引数の同義語としてarguments使用する人を理解するのに問題はありません。parameter私はあなたの最後の文の結論に同意します。それらは「議論」であり、最も強調して属性ではありません。ヒートマップによって返されるオブジェクトの属性は次のとおりです。

 > 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)

クラスの一部である関数はメソッドと呼ばれます。また、属性は、クラスオブジェクト(またはいわゆるインスタンス)に関連付けられた値またはメソッドのいずれかです。

したがって、引数と属性のどちらを呼び出すかは、関数とメソッドのどちらを呼び出すかによって異なります。しかし、関数を呼び出す場合、引数は適切な用語であると言えます。たとえば、次のようになります。heatmap

heatmap(my_data)
于 2013-03-19T15:12:03.767 に答える
0

属性:オブジェクトのプロパティ。たとえば、PersonにはString fName、lNameがあります。

パラメータ:関数/メソッド定義に表示されます(例:public void setName(fNamelName))

引数:メソッド/関数を呼び出す/呼び出すときにメソッド/関数のパラメーターに渡される値。例:myPerson.setName( " Michael "、 " Jackson"

于 2014-05-12T02:42:01.817 に答える