APCluster Ошибка в as.vector(data): нет метода для принудительного приведения этого класса S4 к вектору
Используя некластеризованный фрейм входных данных (fci), APResult создается из apcluster () как epxected:
> apclr2q02 <- apcluster(negDistMat(r=2), fci)
> show(apclr2q02)
APResult object
Number of samples = 1045
Number of iterations = 826
Input preference = -22.6498
Sum of similarities = -1603.52
Sum of preferences = -1336.338
Net similarity = -2939.858
Number of clusters = 59
В онлайн- документации говорится, что aggExCluster() может принимать либо данные для кластеризации в качестве входных данных, либо предыдущий результат кластеризации (ExClust или APResult). Запустив aggExCluster для некластеризованных данных (fci), код работает должным образом:
> aglomr2 <- aggExCluster(negDistMat(r=2), fci)
> aglomr2
AggExResult object
Number of samples = 1045
Maximum number of clusters = 1045
Результат может быть нанесен в формате дендограммы, и все хорошо; однако, используя APResult, полученный выше (apclr2q02) в качестве входных данных, возвращается следующая ошибка:
> aglomr2 <- aggExCluster(negDistMat(r=2), apclr2q02)
Error in as.vector(data) :
no method for coercing this S4 class to a vector
Любые предложения о том, что я могу делать неправильно с объектом APResult в качестве ввода?
1 ответ
Если вы хотите использовать aggExCluster()
поверх предыдущего результата кластеризации, заданного как 'ExClust
' или же 'APResult
'объект, эти объекты должны быть переданы в качестве аргумента'x
и, кроме того, должна быть доступна матрица сходства. Вот фрагмент кода на основе вашего примера (обратите внимание, что объект 'apres
вернулся из apcluster()
включает в себя матрицу подобия):
cl1 <- cbind(rnorm(50,0.2,0.05),rnorm(50,0.8,0.06))
cl2 <- cbind(rnorm(50,0.7,0.08),rnorm(50,0.3,0.05))
x <- rbind(cl1,cl2)
apres <- apcluster(negDistMat(r=2), x, q=0.7)
aggExCluster(x=apres)
Если вы начинаете с матрицы подобия, вы можете включить ее в объект APResult, т.е.
sim <- negDistMat(r=2, x)
apres <- apcluster(sim, q=0.7, includeSim=TRUE)
aggExCluster(x=apres)
(если apcluster()
вызывается для матрицы сходства, по умолчанию матрица не включена в объект результата, который можно переопределить с помощью 'includeSim=TRUE
")
Кроме того, вы также можете указать матрицу сходства через аргумент 's
":
sim <- negDistMat(r=2, x)
apres <- apcluster(sim, q=0.7)
aggExCluster(x=apres, s=sim)
призвание aggExCluster()
с функцией подобия иAPResult
"объект не будет работать, потому чтоAPResult
не включает в себя исходные данные, поэтому aggExCluster()
не может вычислить матрицу подобия, необходимую для кластеризации. Вместо этого, если aggExCluster()
вызывается с аргументомs
"будучи функцией подобия, она ожидает аргумент"x
'содержать необработанные данные и, следовательно, будет пытаться преобразовать их в поднаборы объекта. Вот почему вы получаете это сообщение об ошибке.