对于iris数据集,我试图找到每一对物种之间的Mahalanobis距离。我试过以下几种方法,但没有运气。我尝试了以下几点:
group <- matrix(iris$Species)
group <- t(group[,-5])
variables <- c("Sepal.Length", "Sepal.Width", "Petal.Length", "Petal.Width")
varibles <- as.matrix(iris[,variables])
mahala_sq <- pairwise.mahalanobis(x=variables, grouping=group)但是得到错误消息
pairwise.mahalanobis中的错误(x=变量,分组=组):nrow(x)和长度(分组)是不同的
发布于 2020-09-23 22:26:12
这样做是可行的:
HDMD::pairwise.mahalanobis(x=iris[,1:4], grouping=iris$Species)x应该是观测值的数值矩阵(columns=variables,rows=observations)grouping应该是“表示观测的组分类的字符或值的向量”,长度等于nrow(x))。
在编辑您的问题时,我意识到问题来自于一个错误(您分配了varibles而不是variables);如果您修复了该错误,您的代码似乎会正常工作(至少不会抛出错误)。(我仍然声称我的解决方案更简单.)
如果您想更小心一点,可以使用x <- iris[colnames(x) != "Species"] (或subset(select=)或dplyr::select()模拟)来按名称而不是位置来引用省略的列。
如果您希望(出于某种原因)使用单个响应变量运行此分析,则需要使用drop=FALSE防止将一列矩阵折叠到向量,即使用x=iris[,1,drop=FALSE]。
https://stackoverflow.com/questions/64036986
复制相似问题