sink
、lapply
、およびdput
を使用する1つのオプションです。 dist
オブジェクトにwrite.table
を使用するには、行列である必要がありますので、lapply
のステップで行列に変換し、出力を書き込む前に対角線と上三角を手動でNA
に設定してください。ここでは、間にいくつかの空白行をファイルに出力を書き込むことができます方法です
set.seed(1)
x <- matrix(rnorm(100), nrow = 5)
y <- matrix(rnorm(100), nrow = 5)
myList <- list(A = dist(x),
B = dist(y))
myList
# $A
# 1 2 3 4
# 2 5.701817
# 3 6.013119 5.032069
# 4 7.276905 5.325473 5.811861
# 5 6.619295 5.306750 4.945987 6.612081
#
# $B
# 1 2 3 4
# 2 7.469565
# 3 5.717330 6.407709
# 4 5.371346 6.106838 5.057519
# 5 6.029762 6.256703 4.685266 5.452838
:ここ
は、いくつかのサンプルデータです。また、各マトリックスが印刷された後に容易に取り除くことができるライン
NULL
もある。
sink("myDistList.txt", type="output")
invisible(
lapply(myList, function(x) {
y <- as.matrix(x)
y[upper.tri(y)] <- NA
diag(y) <- NA
dput(write.table(y, row.names = FALSE,
col.names = FALSE, na = ""))
cat("\n\n")
}))
sink()
オープニングアップ "myDistList.txtは" あなたにこのようなものを与える必要があります:もちろん
5.70181650842794
6.01311946994002 5.03206860827638
7.27690516432265 5.32547302778382 5.8118611864786
6.61929500038789 5.3067497799772 4.94598733972826 6.61208111472781
NULL
7.46956498920544
5.7173301814994 6.40770896281359
5.37134559156135 6.10683846835378 5.05751911328028
6.02976206855185 6.25670324709768 4.68526645722475 5.45283785882534
NULL
、capture.output(myList, file = "myDistList.txt")
はまたあなたの出力 - 希望に近いあなたに非常にになるだろう - それはちょうど画面にmyList
を印刷したようになります(つまり、行と列の名前が含まれます)。あなたがそのルートに行くことを決めた場合、いくつかの巧妙な正規表現の仕事は余分な行を簡単に削除することができるはずです。
たとえば、capture.output
という出力のテキストエディタに「geany」を使用すると、次の検索と置換のオプションを使用してテキストファイルをクリーンアップすることができました。 ):
^\s+.*|^\$.*
を検索すると^[0-9]+\s(.*)
のための単一のスペース
- 検索と交換し、道に
\1
と交換してください、私は目を好みます距離行列を逆行列に変換するなどの方法です。
明確にするには、出力に行名と列名を入れないようにしてください。あなたのリストは名前付きリストですか? – A5C1D2H2I1M1N2O1R2T1
はい、正しい。純粋な値。行/列の順序は、そのIDを決定します – Curlew