3

Rで次のことが起こる理由を誰でも説明できますか:

> 0.0 < "14.9a"
[1] TRUE

> 2.03 < "14.9a"
[1] FALSE

> 10.11006 < "14.9a"
[1] TRUE

"14.9a" が int に内部的に強制されるとどうなりますか? 2番目の例が示すように、数字以外の文字を無視することはできません。

4

2 に答える 2

14

反対のことをして、intを文字列に変換していると思います。

> "0.0" < "14.9a"
[1] TRUE

> "2.03" < "14.9a"
[1] FALSE

> "10.11006" < "14.9a"
[1] TRUE

ヘルプページから:

2 つの引数が異なる型のアトミック ベクトルである場合、一方が他方の型に強制されます。(降順の) 優先順位は、文字、複素数、数値、整数、論理、および raw です。

また:

文字ベクトル内の文字列の比較は、使用中のロケールの照合シーケンスを使用して文字列内で辞書式に行われます。ロケールを参照してください。en_US などのロケールの照合順序は通常、C (ASCII を使用する必要があります) とは異なり、驚くべきことです。照合順序について仮定をしないように注意してください ...

于 2012-04-12T14:54:53.593 に答える
5

ごとに?"<"

2 つの引数が異なる型のアトミック ベクトルである場合、一方が他方の型に強制されます。(降順の) 優先順位は、文字、複素数、数値、整数、論理、および raw です。

したがって、数値は文字列に変換され、文字列は辞書式の順序に従って比較されます。(つまり、「2」>「10」)

于 2012-04-12T14:56:45.967 に答える