входные данные не двойного типа? - PullRequest
1 голос
/ 06 января 2012

При программировании на R я постоянно сталкиваюсь со следующей ошибкой ::

Ошибка в data.validity (data, "data"): неправильное использование: ввод 'data' is не двойного типа.

Может кто-нибудь объяснить, почему происходит эта ошибка, то есть причины в наборе данных, которые вызывают ошибку?

Вот код, который я запускаю. Загруженные мной пакеты: cluster , psych и clv .

data1 <- read.table(file='dataset.csv', sep=',', header=T, row.names=1)
data1.p <- as.matrix(data1)
hello.data <- data1.p[,1:15]
agnes.mod <- agnes(hello.data)
v.pred <- as.integer(cutree(agnes.mod,3)) # "cut" the tree
scatt <- clv.Scatt(hello.data, v.pred)

Error in data.validity(data, "data") :
 Bad usage: input 'data' is not double type.

1 Ответ

3 голосов
/ 06 января 2012

Ключевая часть data.validity(), вызывающая ошибку:

data = as.matrix(data)
if( !is.double(data) )
    stop(paste("Bad usage: input '", name, "' is not double type.", sep=""))

data преобразуется в матрицу и затем проверяется, является ли она числовой матрицей, с помощью is.double().Если он не числовой, предложение истинно и возникла ошибка.Так почему же ваш data (hello.data) не является числовым при преобразовании в матрицу?Либо у вас есть символьные переменные в ваших данных или есть факторы.Есть ли у вас факторы?Попробуйте

str(hello.data)

Есть ли там нечисловые переменные?Если у вас есть данные персонажа, избавьтесь от них.Если у вас есть факторы, то data.validity() может привести к data.matrix(), но если нет, попробуйте

hello.data <- data.matrix(hello.data)

после строки, создающей hello.data, затем запустите остальную часть вашего кода.

Непонятно, имеет ли это смысл (рассматривая номинальную или порядковую переменную как простое числовое), поскольку вы не предоставили воспроизводимый пример или не объяснили, какие у вас данные и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...