0

我在应用到 df 的大型脚本中使用 hclust 函数,如下例所示:

HClust <- hclust(d = dist(model.matrix(~-1 + A + B + C + D, df))^2, method = "centroid")

我只想在df中指定一次变量,例如。MgO、Zn、CaO ......当我调用 hclust() 时,我想自动拥有它们。

我尝试创建一个向量,该向量将以我将用于 hclust 调用的格式包含数据帧变量。但生成的树状图不正确。

  vars_for_clust <- paste(colnames(df),"+") 

这给出了以下内容:

vars_for_clust
[1] "A+" "B+" "C+"

并在 hclust 调用中使用了这个向量:

  HClust <- hclust(d = dist(model.matrix(~-1 + vars_for_clust, df))^2, method = "centroid")

但是出了点问题,因为即使它没有给出错误,生成的树状图也不正确(所有垂直线都相等)

谢谢!!

样本数据在: https ://github.com/esteful/kaixo

4

1 回答 1

1

这里有两个问题:1. 你使用 ofpaste和 2. 你使用 ofvars_for_clust作为model.matrix.

要获得所需的内容,您应该将整个公式构造为字符串,然后将其转换为公式 - 如下所示:

(FormString <- paste(c("~ -1", colnames(df)), collapse=" + "))
[1] "~ -1 + A + B + C"
HClust <- hclust(d = dist(model.matrix(as.formula(FormString), df))^2, method = "centroid")
于 2017-09-07T21:58:34.140 回答