74

vector があるとvします。その逆、つまり最後の要素を最初に取得するにはどうすればよいですか?

最初に私に来るのは ですがv[length(v):1]、 が の場合は NA を返しますvnumeric(0)、ユーザーは通常、ソートしても何も返らないことを期待していますが、ソートしないと利用できないものを返します-私の場合は大きな違いがあります。

4

1 に答える 1

112

あなたはもうすぐそこにいます。revあなたが必要とすることを行います:

rev(1:3)
# [1] 3 2 1
rev(numeric(0))
# numeric(0)

理由は次のとおりです。

rev.default
# function (x) 
# if (length(x)) x[length(x):1L] else x
# <bytecode: 0x0b5c6184>
# <environment: namespace:base>

の場合numeric(0)length(x)は 0 を返します。if論理条件が必要なため、またはに強制length(x)します。が 0の場合とその他の数値の場合が起こります。TRUEFALSEas.logical(x)FALSExTRUE

したがって、if (length(x))必要なものを正確にテストします-x長さがゼロかどうか。そうでない場合length(x):1Lは、望ましい効果があり、それ以外の場合は、@ floder がコメントで説明したように、何も元に戻す必要はありません。

于 2013-09-21T14:06:39.893 に答える