我在一个应用于df的大脚本中使用hclust函数,如下例所示:
HClust <- hclust(d = dist(model.matrix(~-1 + A + B + C + D, df))^2, method = "centroid")我只想在df中指定一次变量,例如。MgO,Zn,CaO...当我调用hclust()时,我希望它们是自动的。
我尝试创建一个向量,它将以我将用于hclust调用的格式包含dataframe变量。但是由此得到的树状图是不正确的。
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")但有些地方出了问题,因为即使它没有给出错误,所得到的树状图也是不正确的(所有垂直线都是相等的)
谢谢!!
发布于 2017-09-08 05:58:34
这里有两个问题: 1.使用paste;2.使用vars_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")https://stackoverflow.com/questions/41738961
复制相似问题