1. ホーム
  2. r

[解決済み] ベクターを逆順に並べるには?

2022-02-18 16:15:45

質問内容

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

最初に思いつくのは v[length(v):1] の場合、NA を返します。 vnumeric(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)TRUE または FALSE . これは as.logical(x)FALSE いつ x が0であり TRUE は、それ以外の数値の場合です。

このように if (length(x)) は、まさにあなたが望むものをテストしています。 x は長さ0である。そうでない場合は length(x):1L は望ましい効果をもたらしますが、そうでない場合は、@floderさんがコメントで説明しているように、何も逆戻りさせる必要はないのです。