ベクトルv
があると仮定すると、その逆、つまり最後の要素を最初に取得するにはどうすればよいですか?
私に最初に来るのはv[length(v):1]
ですが、v
がnumeric(0)
の場合はNAを返しますが、ユーザーは通常、何もソートしないと何も返されず、何もソートしないと返されます利用できないもの-それは私の場合に大きな違いを生みます。
あなたはほとんどそこにいます。 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)
をTRUE
に強制します。またはFALSE
。 FALSE
が0で、それ以外の数値の場合はx
の場合、as.logical(x)
はTRUE
になります。
したがって、if (length(x))
は、x
の長さがゼロかどうかを正確にテストします。そうでない場合は、length(x):1L
が望ましい効果をもたらします。そうでない場合は、@ floderがコメントで説明したように、何も逆にする必要はありません。