2017-01-19 16 views
0

Я использую функцию hclust в большом сценарии применяется к ФРУ, как в этом примере:Как создать вектор с переменными использовать в hclust

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

Я хотел бы указать только один раз переменные в df, например. MgO, Zn, CaO ... и когда я вызываю hclust(), я хотел бы иметь их автоматически.

Я попытался создать вектор, который будет включать переменные dataframe в формате, который я буду использовать для вызова 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

+0

вы можете добавить данные? –

ответ

1

Там две проблемы: 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")