13

たとえば、ベクトルがあるとします。 は、ここでと同じクラスの長さゼロのベクトルを返しx <- 1:10ます。x[0]xinteger(0)

NAエラーをスローしたり、戻ったりするのではなく、その選択の背後に理由があるかどうか疑問に思っていましたx[11]か? また、x[0]返品integer(0)が役立つ状況を考えられる場合は、回答に含めていただきありがとうございます。

4

3 に答える 3

10

に見られるように?"["

NA とゼロの値が許可されます。ゼロを含むインデックス マトリックスの行は無視されますが、NA を含む行は結果に NA を生成します。

したがって、インデックス 0 は単に無視されます。これは以下で見ることができます

x <- 1:10
x[c(1, 3, 0, 5, 0)]
#[1] 1 3 5

したがって、指定した唯一のインデックスが 0 の場合、適切な応答は空のベクターを返すことです。

于 2012-05-16T02:22:05.930 に答える
2

私はプログラマーではなく、確かにRソースに貢献していないので、それに対する私の亀裂。ここで何かが発生したが、何も返されなかったことを示すために、何らかのプレースホルダーが必要なためかもしれません。これは、 や などでより明確にtablesなりsplitます。たとえば、値のテーブルを作成し、そのセルがゼロであると言う場合、ベクトル内の文字列から作成されたセルには値がないことを保持する必要があります。x[0]==0ゼロの数値ではなく、値がないため、持つのは適切ではありません。

したがって、次の分割では、プレースホルダーが必要であり、integer(0)値が返されない場所を保持します。これは 0 と同じではありません。返される 2 番目のものnumeric(0)は、数値のプレースホルダーであることを示すプレースホルダーであることに注意してください。

with(mtcars, split(as.integer(gear), list(cyl, am, carb)))
with(mtcars, split(gear, list(cyl, am, carb)))

したがって、ある意味x[FALSE]では、ベクトル内に存在しないゼロ点の場所を保持しているという点で、私の反論は真実です。

よし、私が今吐き出したこのバロンガは、誰かが反論して取り壊さない限り真実だ。

PS このガイドの 19 ページ ( LINK ) は次のように述べています。integer() and integer(0) are empty integer.

関連する SO 投稿: 整数 (0) をキャッチする方法は?

于 2012-05-16T02:06:24.667 に答える
2

配列のインデックスは 1 から始まるため、インデックス 0 には意味がありません。値はベクトル インデックスとして無視されます。

于 2012-05-16T02:20:19.187 に答える