2016-05-08 6 views
0

私はRの新しいユーザーですが、私は 'double'型のオブジェクトを持っていますが、is.numeric(X)を取得するとFALSEを返します。どうすれば可能ですか? Xは二重数のリストなので、numeric型でなければなりません。それじゃない?ここでR:Xの型はdoubleですが、as.numeric(X)はFALSEですか?

は一例です:

student_ages <- difftime(strptime(rep("2016-05-01 00:28:15" , 3), "%Y-%m-%d %H:%M:%S"), strptime(rep("2015-03-01 00:28:15" , 3), "%Y-%m-%d %H:%M:%S") , units="days")/365 
typeof(student_ages) 
[1] "double" 
is.numeric(student_ages) 
[1] FALSE 
+1

'as.numeric'は論理値を返すべきではありません:あなたは意味の「数字」(=「ダブル」)as.numericとし、その値を強要している可能性があります。あなたは 'is.numeric'を使用していないと確信していますか?そして...「クラス(オブジェクト)」とは何ですか? –

+0

ありがとう、それはタイプミスだった、私は質問を編集しました – Alex

+2

まあ、R 'double'は 'numeric'の同義語ですので、本当に再現可能な例を投稿する必要があります。 –

答えて

4

あなたがオブジェクトにdputを使用している場合(これはstr機能も多くの例でもありますが、Rの内部構造を決定するための非常に最良の方法の一つです) ....あなたはそれがクラスのdifftime "を持っていることがわかります。Rで

> dput(student_ages) 
structure(c(1.16974885844749, 1.16974885844749, 1.16974885844749 
), units = "days", class = "difftime") 

は、それが機能ディスパッチと関数の結果を決定classです。 typeof関数は、より低いレベルの情報を返します。ファクタベクトルはtypeofから "数値"を返しますが、is.numeric()からFALSEを返します。

> as.numeric(student_ages) 
[1] 1.169749 1.169749 1.169749 
+0

なぜtypeofとclassは二つの異なるものを返すのですか?(ダブル、difftime) – Alex

+1

'as.numeric()'は 'c()'よりも直感的です:) –

+1

@Alex - 型とクラス。それらは同じ機能ではありません。 –

関連する問題