1

对于以下牙科.csv 文件

item,x,y,z
A1,66,89,122
A2,14,44,-9
A3,-17,199,11
A35,99,0,12
test,15,144,15

我写了以下 R 脚本

mycoord<-read.csv("dental.csv")
d<-dist(mycoord)
h<-hclust(d)
plot(h, lab=mycoord$item)

这将“测试”坐标匹配到最接近的值,如下所示

在此处输入图像描述

我需要做的是一个函数,它接受整数 x、y、z 并将它们作为“测试”放在数据框中,然后绘制树状图。有什么帮助吗?

另一件事,对于上面相同的 R 脚本,我添加了以下内容

newdata<-mycoord[,2:4]
heatmap(as.matrix(newdata))

我得到以下图表

在此处输入图像描述

出于某种原因,我无法在热图中添加标签(我的意思是“A3”、“A4”等。而不是“1”、“2”、“3”等。)使用参数时出现错误实验室=mycoord$item

4

2 回答 2

2

是不是这样,您只想拥有一个函数,该函数将原始数据矩阵和测试矩阵结合起来,然后将其馈送到您的聚类中?有人想像

testClust <- function(data,test){
    mycoord <- rbind(data,test)
    d<-dist(mycoord)
    h<-hclust(d)
    plot(h, lab=mycoord$item)
}
于 2013-02-19T08:15:20.493 回答
1

如何在没有test先加载 CSV 的情况下像这样:

df <- read.csv(header=T, text="item,x,y,z
A1,66,89,122
A2,14,44,-9
A3,-17,199,11
A35,99,0,12")

然后加载test为:

test <- data.frame(item="test", x=15, y=144, z=15)

然后,使用rbindas 计算距离:

d <- dist(rbind(df[,2:4], test[,2:4]))
h <- hclust(d)
plot(h, labels=c(as.character(df$item), as.character(test$item)))

这是你需要的吗?

对于第二部分:

dd <- rbind(df, test)
dd.m <- as.matrix(dd[,2:4])
row.names(dd.m) <- dd[,1]
heatmap(dd.m)

在此处输入图像描述

于 2013-02-19T08:14:02.073 回答