【问题标题】:Using findInterval after discretization in R在 R 中离散化后使用 findInterval
【发布时间】:2017-04-29 00:43:32
【问题描述】:

离散变量(区间方法)后,我无法检查一个值是否属于区间。

在向量a中离散化c(1:10)

(a<-unique(discretize(1:10,method="interval",5)))

[1] [ 1.0, 2.8) [ 2.8, 4.6) [ 4.6, 6.4) [ 6.4, 8.2) [ 8.2,10.0]

然后检查 4 的值在哪个区间内:

for(i in 1:5){print(findInterval(x=4,a[i]))}

[1] 1

[1] 1

[1] 1

[1] 1

[1] 0

虽然它应该导致0 1 0 0 0

我做错了什么? discretize 函数和 findInterval 不能很好地协同工作?

编辑: 另一个相关问题: 为什么在离散化一列后我会得到重复的值?,即,

(a<-discretize(1:10,method="interval",5)) [1] [ 1.0, 2.8) [ 1.0, 2.8) [ 2.8, 4.6) [ 2.8, 4.6) [ 4.6, 6.4) [ 4.6, 6.4) [ 6.4, 8.2) [8] [ 6.4, 8.2) [ 8.2,10.0] [ 8.2,10.0]

【问题讨论】:

  • 这个discretize函数从何而来?它似乎不在基础 R 中。
  • 来自 arules 包

标签: r machine-learning data-mining


【解决方案1】:

我认为您错误地使用了 findInterval。您的向量 a 不需要采用这种形式。您只需要定义间隔的阈值点向量。试试这个

a<-seq(1,10, length.out=6)
findInterval(4,a)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-12
    • 1970-01-01
    • 2020-06-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多