web-dev-qa-db-ja.com

空のデータフレームがis.null()テストで失敗するのはなぜですか?

私の質問が非常に基本的なものである場合、すみません。 df <- data.frame()によって空のデータフレームを作成しましたが、明らかにデータフレームはNULL(空)です。 is.null(df)によってデータフレームが空かどうかを確認しようとすると、結果がFALSEになります。 RのNULLemptyに違いはありますか。この場合、データフレームがNULLでない場合、空のデータフレームの内容とそのタイミングNULL。ありがとう

22
Agaz Hussain

dfはNULLではありません。これは、データフレームであり、したがっていくつかの定義済みプロパティがあるためです。たとえば、クラスがあります。また、結果がゼロになる場合でも、nrow(df)を使用してデータフレームの行数を取得できます。したがって、行数も明確に定義されています。

私が知っている限りでは、ベースRには_is.empty_コマンドはありません。あなたができることは、例えば、次のようなものです

_is.data.frame(df) && nrow(df)==0
_

これは、空のデータフレーム(つまり、行のないデータフレーム)に対してTRUEを返し、それ以外の場合はfalseを返します。

_is.data.frame_を最初にチェックする理由は、nrowがデータフレーム以外に適用されるとエラーが発生する可能性があるためです。 _&&_のおかげで、dfがデータフレームの場合にのみnrow(df)が評価されます。

39
Stibu

data.frame()は、data frameクラスを持つオブジェクトを作成します。オブジェクトexistsis.null[〜#〜] false [〜#〜]を返します。 NULL変数にはクラスも内容もありません。

0
ahmohamed