Rで次のことが起こる理由を誰でも説明できますか:
> 0.0 < "14.9a"
[1] TRUE
> 2.03 < "14.9a"
[1] FALSE
> 10.11006 < "14.9a"
[1] TRUE
"14.9a" が int に内部的に強制されるとどうなりますか? 2番目の例が示すように、数字以外の文字を無視することはできません。
Rで次のことが起こる理由を誰でも説明できますか:
> 0.0 < "14.9a"
[1] TRUE
> 2.03 < "14.9a"
[1] FALSE
> 10.11006 < "14.9a"
[1] TRUE
"14.9a" が int に内部的に強制されるとどうなりますか? 2番目の例が示すように、数字以外の文字を無視することはできません。
反対のことをして、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 を使用する必要があります) とは異なり、驚くべきことです。照合順序について仮定をしないように注意してください ...
ごとに?"<"
:
2 つの引数が異なる型のアトミック ベクトルである場合、一方が他方の型に強制されます。(降順の) 優先順位は、文字、複素数、数値、整数、論理、および raw です。
したがって、数値は文字列に変換され、文字列は辞書式の順序に従って比較されます。(つまり、「2」>「10」)