2016-06-01 8 views
1

R-langは述べて:「R言語を構成するオブジェクトの3つのタイプがあります。彼らは、呼び出し、式、...です。」これらは、表現と呼びますtypeofを呼び出し

ex <- expression(max(1:3)) 
cl <- call("max", x = 1:3) 

彼らは両方の言語のオブジェクトは、次のとおりです。

is.language(ex) 
# [1] TRUE 
is.language(cl) 
# [1] TRUE 

式は、タイプの表現

です
typeof(ex) 
# [1] "expression" 

私はタイプコールのもので呼び出しを期待しているだろうが、彼らは

typeof(cl) 
# [1] "language" 

より一般的なタイプ言語であり、この背後にあるが任意の合理的な場合は誰でも知っていますか?私は何か重要なものを逃していますストレージ・メカニズムについての情報を返しますtypeof任意のサポート

答えて

2

を事前に

感謝。だからこそtypeof(factor(letters))integerを返します。

typeofを使用するのではなく、class関数を使用してオブジェクトをクエリする方が一般的には有益です。

> class(cl) 
[1] "call" 

?typeofヘルプページもtypeoftypeofを使用してstorage.modeが定義されているという意味で、より「基本的な」機能であっても、さらに詳細を持っている?storage.modeをご参照:

> storage.mode(cl) 
[1] "language" 

違いRの表現と呼び出しの間で時折私が邪魔になりました。 bquote関数はcall -objectを返し、「真の」R式は返しません。グレーチングが修正されているとは思うが、ある時点で格子プロット関数はbquoteの結果をプロットマス評価することを拒否した。あなたはまた、代理演算の動作と、それが引数を解析する方法の相違点に慣れるべきです。

substitute(expression(max(1:3)), list(max=min)) 
#expression(.Primitive("min")(1:3)) # Success 

substitute(call('max', x=1:3), list(max=min)) 
#call("max", x = 1:3) #Failure 
関連する問題