2013-04-22 8 views
23

c()append()の違いは何ですか?何かありますか?c()とappend()の違い

> c(  rep(0,5), rep(3,2)) 
[1] 0 0 0 0 0 3 3 

> append(rep(0,5), rep(3,2)) 
[1] 0 0 0 0 0 3 3 
+1

'c'は、いくつかのS3メソッド('メソッド( "c") 'を参照)を持つプリミティブでもあります。 – baptiste

答えて

32

あなたはそれがcappendの違いを示していない使用していた方法。 appendは、特定の位置の後にベクトルに値が挿入されるという意味で異なります。

例:

x <- c(10,8,20) 
c(x, 6) # always adds to the end 
# [1] 10 8 20 6 
append(x, 6, after = 2) 
# [1] 10 8 6 20 

あなたがR端子にappendを入力した場合、あなたはそれが値を追加するc()を使用していることがわかります。

# append function 
function (x, values, after = length(x)) 
{ 
    lengx <- length(x) 
    if (!after) 
     c(values, x) 
    # by default after = length(x) which just calls a c(x, values) 
    else if (after >= lengx) 
     c(x, values) 
    else c(x[1L:after], values, x[(after + 1L):lengx]) 
} 

デフォルト(あなたの例のようにafter=を設定しない場合)で、それは単にc(x, values)を返すこと(コメント部分)を参照してくださいすることができます。 cは、値をvectorsまたはlistsに連結できるより汎用的な関数です。

+2

+1ソースを表示します。 R! – Nishanth

+0

の '!after'がTRUEなら' after'が0であることに常に洞察を与えます。それ以外の場合はFALSEを返します。 afterが設定されているかどうかは関係ありません。 – hadley

関連する問題