输入“数据”不是双重类型?

时间:2012-01-06 16:34:47

标签: r

在R中编程时,我不断面临以下错误::

  

data.validity错误(数据,"数据"):用法不当:输入'数据'是   不是双重型。

任何人都可以解释为什么会发生这种错误,即数据集中导致错误的原因?

以下是我正在运行的代码。我加载的软件包是集群精神 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 个答案:

答案 0 :(得分:3)

引发错误的data.validity()的关键部分是:

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

data转换为矩阵,然后通过is.double()检查它是否为数字矩阵。如果它不是数字,则该子句为true并引发错误。那么为什么在转换为矩阵时,您的datahello.data)数字不是?要么在数据中有字符变量,要么有因素。你有因素吗?尝试

str(hello.data)

那里有非数字变量吗?如果你有字符数据,那么摆脱它。如果您有因素,那么data.validity()可以通过data.matrix()强制进行,但不是,请尝试

hello.data <- data.matrix(hello.data)
在创建hello.data行之后

,然后运行其余代码。

这是否有意义(将名义或序数变量视为简单数字)尚不清楚,因为您没有提供可重复的示例或解释了您的数据等等。