【发布时间】:2016-08-22 16:40:33
【问题描述】:
在 R-devel 列表中,Martin Maechler 发布了关于因子中重复级别的消息
“具有非唯一(重复)级别的因子自 2009 年以来已被弃用 - 更多现在已弃用......”June 4, 2016
它指出,在计划于 2017 年 4 月发布的 R 3.4 中,重复的关卡将导致错误,而不仅仅是警告。
我想知道为什么级别函数不会引起类似的警告?在这里,我以两种方式将前三个级别组合为“a”,一种已弃用。
例子
> x <- c("a", "b", "c", "d")
> xf <- factor(x, levels = c("a", "b", "c", "d"),
labels = c("a", "a", "a", "d"))
Warning message:
In `levels<-`(`*tmp*`, value = if (nl == nL)
as.character(labels) else paste0(labels, :
duplicated levels in factors are deprecated
> xf <- factor(x)
> levels(xf) <- c("a", "a", "a", "d")
> xf
[1] a a a d
Levels: a d
我想了解为什么 R 对后者的处理方式与前者不同。
这是记录在案的关卡行为,我没有利用未说明的元素。在 ?levels 中,有一个允许重复级别的示例。我将其粘贴进去以节省查找时间。
## combine some levels
z <- gl(3, 2, 12, labels = c("apple", "salad", "orange"))
z
levels(z) <- c("fruit", "veg", "fruit")
z
【问题讨论】:
标签: r