vector があるとvします。その逆、つまり最後の要素を最初に取得するにはどうすればよいですか?
最初に私に来るのは ですがv[length(v):1]、 が の場合は NA を返しますvがnumeric(0)、ユーザーは通常、ソートしても何も返らないことを期待していますが、ソートしないと利用できないものを返します-私の場合は大きな違いがあります。
あなたはもうすぐそこにいます。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 がコメントで説明したように、何も元に戻す必要はありません。