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の場合とその他の数値の場合が起こります。TRUE
FALSE
as.logical(x)
FALSE
x
TRUE
したがって、if (length(x))
必要なものを正確にテストします-x
長さがゼロかどうか。そうでない場合length(x):1L
は、望ましい効果があり、それ以外の場合は、@ floder がコメントで説明したように、何も元に戻す必要はありません。