1
を持っている私は、7つのベクトルを含むリスト「simil」、持っている:as.matrix()とas.dist()が異なる結果
> dput(simil)
structure(list(Monday = structure(c(0.889987253484581, 0.882957894295089,
0.882232353177177, 0.874080268021168, 0.851760771472629, 0.811536071048775
), .Names = c("Sunday", "Tuesday", "Friday", "Wednesday", "Thursday",
"Saturday")), Tuesday = structure(c(0.901682757072732, 0.882957894295089,
0.874716806575548, 0.869202937572079, 0.855248496101086, 0.818659253763272
), .Names = c("Sunday", "Monday", "Wednesday", "Friday", "Thursday",
"Saturday")), Wednesday = structure(c(0.88354911311872, 0.874716806575548,
0.874080268021168, 0.853293126413937, 0.851921112754124, 0.841170795359615
), .Names = c("Sunday", "Tuesday", "Monday", "Friday", "Thursday",
"Saturday")), Thursday = structure(c(0.86579834238668, 0.855248496101086,
0.851921112754124, 0.851760771472629, 0.851384896045153, 0.836732564057725
), .Names = c("Sunday", "Tuesday", "Wednesday", "Monday", "Friday",
"Saturday")), Friday = structure(c(0.882232353177177, 0.869202937572079,
0.856441568566172, 0.853293126413937, 0.851384896045153, 0.80098779448239
), .Names = c("Monday", "Tuesday", "Sunday", "Wednesday", "Thursday",
"Saturday")), Saturday = structure(c(0.866654844262859, 0.841170795359615,
0.836732564057725, 0.818659253763272, 0.811536071048775, 0.80098779448239
), .Names = c("Sunday", "Wednesday", "Thursday", "Tuesday", "Monday",
"Friday")), Sunday = structure(c(0.901682757072732, 0.889987253484581,
0.88354911311872, 0.866654844262859, 0.86579834238668, 0.856441568566172
), .Names = c("Tuesday", "Monday", "Wednesday", "Saturday", "Thursday",
"Friday"))), .Names = c("Monday", "Tuesday", "Wednesday", "Thursday",
"Friday", "Saturday", "Sunday"), class = c("similMatrix", "list"
))
を私は今、次に使用するdistのオブジェクトに変換したいですそれはhclust()のためです。だから私はas.dist()を使用して、私は計算:
> as.dist(simil,diag = TRUE, upper = TRUE)
Monday Sunday Tuesday Friday Wednesday Thursday Saturday
Monday 0.0000000 0.8899873 0.8829579 0.8822324 0.8740803 0.8517608 0.8115361
Sunday 0.8899873 0.0000000 1.0000000 0.8692029 0.8747168 0.8552485 0.8186593
Tuesday 0.8829579 1.0000000 0.0000000 0.8532931 1.0000000 0.8519211 0.8411708
Friday 0.8822324 0.8692029 0.8532931 0.0000000 0.8519211 1.0000000 0.8367326
Wednesday 0.8740803 0.8747168 1.0000000 0.8519211 0.0000000 0.8513849 0.8009878
Thursday 0.8517608 0.8552485 0.8519211 1.0000000 0.8513849 0.0000000 1.0000000
Saturday 0.8115361 0.8186593 0.8411708 0.8367326 0.8009878 1.0000000 0.0000000
しかし、これは私がas.matrix()を使用する場合とは若干異なる結果である:as.dist()
で
> as.matrix(simil)
Monday Tuesday Wednesday Thursday Friday Saturday Sunday
Monday 1.0000000 0.8829579 0.8740803 0.8517608 0.8822324 0.8115361 0.8899873
Sunday 0.8899873 0.9016828 0.8835491 0.8657983 0.8564416 0.8666548 1.0000000
Tuesday 0.8829579 1.0000000 0.8747168 0.8552485 0.8692029 0.8186593 0.9016828
Friday 0.8822324 0.8692029 0.8532931 0.8513849 1.0000000 0.8009878 0.8564416
Wednesday 0.8740803 0.8747168 1.0000000 0.8519211 0.8532931 0.8411708 0.8835491
Thursday 0.8517608 0.8552485 0.8519211 1.0000000 0.8513849 0.8367326 0.8657983
Saturday 0.8115361 0.8186593 0.8411708 0.8367326 0.8009878 1.0000000 0.8666548
を、マトリックスではありません完全に対称であり、いくつかのペアは間違っています。これはas.matrix()
では起こりません。何故ですか?どうすれば修正できますか?
あなたが言及した 'list'の場合、' sapply/lapply'は 'listをループするメソッドです。あなたがexampの出力を投稿した方が良いでしょう; – akrun
dput()で質問を更新しました。しかし私は理解できません。私のリストをdistオブジェクトに変換するために、どのようにsapply/lapplyを使うべきですか? as.dist()はすでにそれをしていないのでしょうか? –
あなたのdputに基づいて、使用したコードはあなたが示した出力を与えていませんが、 'simplify2array(simil)'は行列 – akrun