在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.
答案 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并引发错误。那么为什么在转换为矩阵时,您的data
(hello.data
)数字不是?要么在数据中有字符变量,要么有因素。你有因素吗?尝试
str(hello.data)
那里有非数字变量吗?如果你有字符数据,那么摆脱它。如果您有因素,那么data.validity()
可以通过data.matrix()
强制进行,但不是,请尝试
hello.data <- data.matrix(hello.data)
在创建hello.data
行之后,然后运行其余代码。
这是否有意义(将名义或序数变量视为简单数字)尚不清楚,因为您没有提供可重复的示例或解释了您的数据等等。