私は、Rと非常に簡単な質問を持っている は私がR.class(object)== "character"よりもchar.characterの方が好きですか?
または他のis.class
機能に
class(object) == "character"
より
is.character(object)
の使用を好むために何らかの理由があります。
私は、Rと非常に簡単な質問を持っている は私がR.class(object)== "character"よりもchar.characterの方が好きですか?
または他のis.class
機能に
class(object) == "character"
より
is.character(object)
の使用を好むために何らかの理由があります。
明白な可読性とパフォーマンスの引数に加えて、は決してである必要があります。class(foo) == "class"
でオブジェクトのクラスをテストしてください。正しい結果を得ることはできません。
nrussellがコメントしたように、S3クラスシステムは、複数のクラス名を持つタグオブジェクトを介して "継承"をサポートしています。単一のクラス名以上が存在するとすぐに、この等価性チェックはナンセンスになります。
代わりに、いずれかを使用:
if (inherits(obj, 'class'))
… action …
それとも、あなたが明示的に厳密なテスト、ではない(極めてまれであるべき)相続テストを実行する場合:
if (identical(class(obj), 'class'))
… action …
@RichardScriven「すべての時間」は無益な双曲線です。 ;-)私はそれをいつものように使う。 –
私は 'class(foo)==" class "'は常に正しい結果を返すと言いたいですが、その結果はほとんどプログラマが意図したものではありません。あなたが言ったことで、誰かが 'class'関数がバグを持っていると思うかもしれませんし、ランダムな結果を与えるかもしれません。 – nicola
は上のテストを試してみてくださいこれは 'xx < - " abc "; – nrussell
関連:[Rでオブジェクトのクラスをチェックするのに好ましい方法](http://stackoverflow.com/questions/17733500/preferred-method-of-checking -objects-class-in-r) – Henrik