重複の可能性:
これらの数値が等しくないのはなぜですか?
私は非常に奇妙な状況に遭遇しました。次のコードを使用して、ベクター (シーケンス) をテキスト ファイルに保存するとします。
fileConn<-file('test.txt')
sink(fileConn,append=T,split=T)
cat('sequence','\n')
cat(as.character(unlist(seq(0,1,0.1))),'\n')
sink()
close(fileConn)
そして、もう一度ロードします:
test=readLines('test.txt')
次に、テキスト ファイルに保存した同じベクトルを抽出して、2 つの「異なる」アプローチを使用して元のシーケンスと比較します。
sequence1=laply(strsplit(test[2]," ")[[1]],as.numeric)
sequence2=as.numeric(strsplit(test[2]," ")[[1]])
奇妙なのは、見た目も (明らかに) 同じタイプのベクトルであるにも関わらず、R はそうではないと考えているように見えることです!!!
cbind(seq(0,1,0.1),sequence1,sequence2)
sequence1 sequence2
[1,] 0.0 0.0 0.0
[2,] 0.1 0.1 0.1
[3,] 0.2 0.2 0.2
[4,] 0.3 0.3 0.3
[5,] 0.4 0.4 0.4
[6,] 0.5 0.5 0.5
[7,] 0.6 0.6 0.6
[8,] 0.7 0.7 0.7
[9,] 0.8 0.8 0.8
[10,] 0.9 0.9 0.9
[11,] 1.0 1.0 1.0
apply(cbind(seq(0,1,0.1),sequence1,sequence2),2,class)
sequence1 sequence2
"numeric" "numeric" "numeric"
apply(cbind(seq(0,1,0.1),sequence1,sequence2),2,nchar)
sequence1 sequence2
[1,] 1 1 1
[2,] 3 3 3
[3,] 3 3 3
[4,] 3 3 3
[5,] 3 3 3
[6,] 3 3 3
[7,] 3 3 3
[8,] 3 3 3
[9,] 3 3 3
[10,] 3 3 3
[11,] 1 1 1
sequence1==seq(0,1,0.1)
[1] TRUE TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE
sequence2==seq(0,1,0.1)
[1] TRUE TRUE TRUE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE
なぜこれが起こるのか、どうすればそれを防ぐことができるのか、誰にも手がかりがありますか? どうもありがとう!