在R中绘制时数值矩阵范围误差
在运行这个例子的代码时,在最后一行中出现以下错误:
矩阵中的错误(平均值(范围),ncol = ncol(x),nrow = nrow(x),dimnames = dimnames(x)):非数值矩阵范围
但是,我记得几个月前看过其他案例,arulesViz是白皮书的分类数据类型。
landing.data=read.csv2("http://archive.ics.uci.edu/ml/machine-learning-databases/shuttle-landing-control/shuttle-landing-control.data",
sep=",", header=F, dec=".")
landing.data=as.data.frame(sapply(landing.data,gsub,pattern="*",replacement=10))
library(arules)
landing.system <- as(landing.data, "transactions")
rules <- apriori(landing.system, parameter=list(support=0.01, confidence=0.6))
rulesLandingManual <- subset(rules, subset=rhs %in% "V1=1" & lift>1.2)
library(arulesViz)
plot(head(sort(rulesLandingManual, by="confidence"), n=3),
method="graph",control=list(type="items"))
运行你的代码后做一个traceback()
给出了这个:
6: matrix(mean(range), ncol = ncol(x), nrow = nrow(x), dimnames = dimnames(x))
5: map(m, c(5, 20))
4: graph_arules(x, measure = measure, shading = shading, control,
...)
3: plot.rules(head(sort(rulesLandingManual, by = "confidence"),
n = 3), method = "graph", control = list(type = "items"))
2: plot(head(sort(rulesLandingManual, by = "confidence"), n = 3),
method = "graph", control = list(type = "items"))
1: plot(head(sort(rulesLandingManual, by = "confidence"), n = 3),
method = "graph", control = list(type = "items"))
所以,基本上错误来自6:
错误意味着任何参数matrix(.)
都不是数字。 为了说明这一点:
> matrix(1:4, ncol=2)
# [,1] [,2]
# [1,] 1 3
# [2,] 2 4
> matrix(1:4, ncol="x")
# Error in matrix(1:4, ncol = "x") : non-numeric matrix extent
你看到错误? 我不认为没有什么可以做的,因为这个软件包将graph
, map
和matrix
扩展到类rules
对象。 所以,这可能与开发者有很大关系。 如果确实如此,可能值得编写/联系开发人员。
我有一些与我正在挖掘规则的数据完全相同的问题,并且在做了一些测试后,我发现这个错误来自使用sort()和head()命令,当有更多的规则满足条件时质量措施超出要求。
例如,在你的代码中,你要求在rulesLandingManual中绘制3个最高置信度规则,但是如果你检查(rulesLandingManual),你会发现有216条规则的置信度为1(最大置信度),所以,当你要求将top n(n小于217)时,在这个新规则对象中生成的矩阵会变得混乱,至少对于plot函数中的图形方法而言。
为了测试我在解释什么,在你的代码中,将n修改为217到224之间的任何值(224是rulesLandingManual中的规则数),它将绘制图形,而n = 216或更少会导致上述错误。
我不知道这是否意图以这种方式工作,或者这是一个错误,我现在正试图弄清楚,所以一个解释会非常方便。
range
是一个功能。 你是说mean(range(x)), ...
?
平均值。 嘿。
链接地址: http://www.djcxy.com/p/25039.html