Что ты не понимаешь? ?vegdist
сообщает нам, что возвращает объект класса "dist"
, поэтому вы можете просто удалить строку dist(....)
и заменить ее одним вызовом vegdist(....)
. Например:
require(vegan)
d <- vegdist(Mydata[, -1], method = "jaccard")
fit <- hclust(d, method="ward")
plot(fit)
Вам нужно отбросить первый столбец (и это должно было быть сделано в евклидовой версии, которую вы указали в Q), поскольку это не те данные, которые следует использовать для формирования матрицы различий.
Это выдаст предупреждение:
Warning message:
In vegdist(Mydata[, -1], method = "jaccard") :
you have empty rows: their dissimilarities may be meaningless in method jaccard
потому что строка 3 не содержит информации для формирования расстояния jaccard между ним и другими образцами. Возможно, вы захотите подумать, подходит ли jaccard в таких случаях.
ОП теперь хочет, чтобы генные метки были именами строк. Самый простой вариант - сообщить R об этом при чтении данных, используя аргумент row.names
для read.table()
:
mydata2 <- read.table(con <- textConnection("gene treatment1 treatment2 treatment3
aaa 1 0 1
bbb 1 1 1
ccc 0 0 0
eee 0 1 0
"), header = TRUE, row.names = 1)
close(con)
дает:
> mydata2
treatment1 treatment2 treatment3
aaa 1 0 1
bbb 1 1 1
ccc 0 0 0
eee 0 1 0
Или, если данные уже находятся в R, и перезагрузка и повтор предыдущих вычислений затруднены, просто присвойте столбцу gene
имена строк и удалите столбец gene
(используя исходный mydata
):
rownames(mydata) <- mydata$gene
mydata <- mydata[, -1]
дает:
> mydata
treatment1 treatment2 treatment3
aaa 1 0 1
bbb 1 1 1
ccc 0 0 0
eee 0 1 0