TL; DR:WeightedCluster
ライブラリー(特にwcKMedoids()
メソッド)をheatmap
,heatmap.2
などの入力として使用してクラスタリング情報を提供する方法?WeightedCluster :: wcKeditを使用してRのヒートマップまたはヒートマップのクラスタリングを提供する方法。
我々はRで(はい/いいえ値は、1とゼロとして表されていない)いくつかのバイナリデータからヒートマップを作成し、列ベースのクラスタリングの行の一部の重みを調整する必要があります。
(これらは多項選択カテゴリから生成され、複数のバイナリのイエス/ノーバリューの行になり、オーバー表現されます)。
私はWeightedClusterライブラリを見つけました。このライブラリは重み付きクラスタリングが可能です。
今質問は、heatmap
,heatmap.2
などの入力としてこのライブラリ(特にwcKMedoids()
メソッド)を使用する方法ですか?
私は以下のエラーメッセージになり、次のコードは、試してみました:
library(gplots)
library(WeightedCluster)
dataset <- "
F,T1,T2,T3,T4,T5,T6,T7,T8
A,1,1,0,1,1,1,1,1
B,1,0,1,0,1,0,1,1
C,1,1,1,1,1,1,1,0
D,1,1,1,0,1,1,1,0
E,0,1,0,0,1,0,1,0
F,0,0,1,0,0,0,0,0
G,1,1,1,0,1,1,1,1
H,1,1,0,0,0,0,0,0
I,1,0,1,0,0,1,0,0
J,1,1,1,0,0,0,0,1
K,1,0,0,0,1,1,1,1
L,1,1,1,0,1,1,1,1
M,0,1,1,1,1,1,1,1
N,1,1,1,0,1,1,1,1"
fakefile <- textConnection(dataset)
d <- read.csv(fakefile, header=T, row.names = 1)
weights <- c(1,1,1,1,1,1,1,1,1,1,1,1,1,1)
distf <- function(x) dist(x, method="binary")
wclustf <- function(x) wcKMedoids(distf(x),
k=8,
weights=weights,
npass = 1,
initialclust=NULL,
method="PAMonce",
cluster.only = FALSE,
debuglevel=0)
cluster_colors <- colorRampPalette(c("red", "green"))(256);
heatmap(as.matrix(d),
col=cluster_colors,
distfun = distf,
hclustfun = wclustf,
keep.dendro = F,
margins=c(10,16),
scale="none")
をしかし、実行していることができます:
Error in UseMethod("as.dendrogram") :
no applicable method for 'as.dendrogram' applied to an object of class "c('kmedoids', 'list')"
どうやら、wcKMedoids
はないドロップインの代替Rさんですhclust
、しかし、誰もそれを回避する方法についていくつかの指針を持っていますか?
UPDATE:私がこれまでに作った小さな進歩は、私がhclust(dist(x))
と同様の出力を生成する方法as.dendrogram.kmedoids
を実装する必要があることを示しています。 (出力はdput
:dput(hclust(dist(x)))
で詳細に調べることができます)。アイデアとポインタは大歓迎です。
私がオフトピックとして、この質問を閉じるために投票しています。 – gung
@gungこれで申し訳ありません(Rの新機能、やり方)、コードサンプルを完全に自己完結型で再現性のあるものにしました! –