ベクトルの長さ、データフレームの行数、または行列の次元数をテストする場所で、Rコードを書くことがよくあります。たとえば、if (length(myVector) == 1)
です。いくつかの基底Rコードを掘り下げながら、このような比較の値が整数で明示的に指定されていることに気付きました。通常、接尾辞は「L」、たとえばif (nrow(data.frame) == 5L)
です。明示的な整数は、関数引数の場合にも使用されることがあります。例えば、cor
関数の文は、x <- matrix(x, ncol = 1L)
とapply(u, 2L, rank, na.last = "keep")
です。いつ整数を明示的にRに指定すべきですか?整数を指定しないことによる潜在的な悪影響はありますか? 1L
などを使用して整数を明示的に指定する必要があるのはいつですか?
答えて
は、それが何を意味するかについての明示的のように、プログラム的に安全であり、かつ任意の変換などに依存しない
対話的にコードを書くとき、エラーに気づくと一緒に解決するために簡単にすることができますところで、あなたがパッケージ(たとえ基底R
)を書いているのであれば、明示的にする方が安全でしょう。
浮動小数点数を使用すると、等価性を考慮する場合、精度問題が発生しますSee this FAQ。
整数を明示的に指定すると、nrow
とlength
のようになり、インデックス引数はapply
に戻り、整数が必要です。
あなたが尋ねた:
は 整数を指定していないから、任意の潜在的な負の影響がありますか?
もっと問題になる可能性がある状況があります。データ分析 P193用チャンバーソフトウェアからの整数の絶対値が2未満^ M、 分数の長さとして
整数値は、正確 限り、「二重」の数字として表されます表現の一部(32ビットマシンでは2^54)。しかし
> (seq(-.45,.45,.15)*100)[3] [1] -15 > (seq(-.45,.45,.15)*100)[3] == -15L [1] FALSE
は、それが明示的でタイピングの例を思い付くするのは難しいです:
それはあなたが値を算出した場合、それは整数のように見えるではなく、かなり一つである可能性があるかを確認することは難しいことではありません整数であり、浮動小数点表現ではそれほど整数ではありませんが、Chambersが説明しているより大きな値に入るまではそうです。
「32ビットマシンでは64ビットの倍数について書いていると思う」 –
32ビットマシンで64ビットを2倍にしないでください(たとえば、2つの32ビットメモリの場所)。 –
確かに彼らはそうです。 64ビットマシンでも64ビットを使用します。 –
- 1. アセンブリで明示的な整列指示文を使用する必要があるのはいつですか?
- 2. 'fb:app_id'プロパティを明示的に指定する必要があります。
- 3. groovyクロージャがデリゲートのスコープで定義された変数を変更するには、delegate.theVariableNameを明示的に指定する必要がありますか?
- 4. 明示的にRESULT_CANCELEDに設定する必要がありますか?
- 5. mod_rewriteは `Alias`を自動的に設定しますか、` RewriteBase`を実行するときに明示的に指定する必要がありますか?
- 6. レプリケーション - 表のID列に明示的な値を指定する必要があります
- 7. コーディングスタイル:パラメータの型を明示的に決定する方法関数に渡す必要がありますか?
- 8. 定数式を整数型に評価する必要がありますか?
- 9. コンパイル時にプロパティに明示的な型指定が必要なのはなぜですか?
- 10. 私はarraylistで整数データを見つける必要がありますか?
- 11. なぜ明示的にスレッドに参加する必要がありますか?
- 12. invalidate(l、t、r、b)の後でクリップ領域を明示的に設定する必要がありますか?
- 13. Shortオブジェクトを明示的に作成する必要はありませんか?
- 14. mysqlで明示的にDROP VIEWを行う必要がありますか?
- 15. この/ selfポインタを明示的に指定する利点は何ですか?
- 16. インターフェイスメンバーを明示的にまたは暗黙的に実装する必要がありますか?
- 17. スコープタイプの変数には明示的なforallsが必要です。どうして?
- 18. std :: string :: operator +()でMyclass :: operator string()を明示的に呼び出す必要があるのはなぜですか?
- 19. なぜC++のprintf関数で型指定子を指定する必要がありますか?
- 20. AbstractControllerのサブクラスでは、明示的なレンダリングが必要です
- 21. なぜ明示的な型の引数は、ダイヤモンドで置き換える必要がありますか?
- 22. コンストラクタはパラメータを指定する必要があります
- 23. Keyを指定している場合はRequiredを指定する必要がありますか?
- 24. 各仮引数のデータ型を個別に指定する必要があるのはなぜですか?
- 25. DuplexClientBaseコンストラクタの "endpointConfigurationName"には何を指定する必要がありますか?
- 26. 配列を値で初期化する - クラスを明示的にインスタンス化する必要がありますか?
- 27. エラー:urlプロパティまたは関数を指定する必要があります
- 28. 固定する必要がある2つのbash関数
- 29. applicationname = "/"明示的に指定されていますか?
- 30. Java 8ラムダ構文で引数型を指定する必要がある理由はありますか?
http://stackoverflow.com/q/7014387/602276と非常によく似ています。あなたの質問に非常によく答える、受け入れられた答えをespcially参照してください。 – Andrie
@ Andrie-質問と回答を指摘していただきありがとうございます。なぜ私の最初の検索でそれが出てこないのか分かりません。 – pistachionut