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'содержать необработанные данные и, следовательно, будет пытаться преобразовать их в поднаборы объекта. Вот почему вы получаете это сообщение об ошибке.

Другие вопросы по тегам