以下dental.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并将它们作为“test”放在数据帧中,然后绘制树形图。有什么帮助吗?
另一件事,对于上面相同的R脚本,我添加了以下
newdata<-mycoord[,2:4]
heatmap(as.matrix(newdata))
我得到以下图表
由于某种原因,我不能在热图上添加标签(我的意思是“A3”,“A4”等......而不是“1”,“2”,“3”等。)我得到错误时使用参数 lab = mycoord $ item
答案 0 :(得分:2)
是这样的,您只想拥有一个功能,它可以获取原始数据矩阵,然后是测试矩阵,将其组合并将其提供给您的群集?想想
testClust <- function(data,test){
mycoord <- rbind(data,test)
d<-dist(mycoord)
h<-hclust(d)
plot(h, lab=mycoord$item)
}
答案 1 :(得分: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)
然后,使用rbind
作为:
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)