2016-05-01 12 views
3

私はsubstituteとおしゃべりしていましたが、実際にnchar(substitute(a + b + c))の結果が何であるかは分かりません。結果はnchar(substitute(a + b + c))は実際に何をカウントしますか?

nchar(substitute(a + b + c)) 
[1] 1 5 1 

正確に何を計算しますか?中期というのは、その表現の要素の数だけであると私は考えました。しかし、次のカウントは何をし、他の1は何を表していますか?

nchar(substitute(a + b)) 
[1] 1 1 1 

答えて

6

私たちは、文字の数を与えることもcharacter

v1 <- as.character(substitute(a + b + c)) 
v1 
#[1] "+"  "a + b" "c"  

nchar(v1) 
#[1] 1 5 1 

カウント空間に変換するから確認することができます。

as.character(substitute(a + b)) 
#[1] "+" "a" "b" 

一方、要素ごとに1つの文字の長さです。

+0

私の質問にお答えいただきありがとうございます。フォローアップとして:表現はなぜそんなに分割されていますか? 'a + b 'は基本的に' +(a、b)'なので、なぜ他の分割 '[1] '+' 'a + b' '' cであるかの理由で' as.character(a + b) 「? –

+2

@ManuelS 2つの用語があるときは、 "+"、 "a"、 "b" 'ですが、2つ以上の用語を持つ場合、第2項は残りの' + 'を持つ必要があります。あなたは 'as.character(substitute(a + b + c + d))'をチェックすることができます。なぜそれがそんなに分割されたのか正確な理由はわかりません。 – akrun

+3

これは、 '+'は左から右の演算子であるからです。だから 'a + b + c'は' '+"(a + b、c) 'に相当します。 –

関連する問題