r - forcats::as_factor 可以返回有序因子吗?

标签 r tidyverse forcats

可以 as_factor来自 forcats返回一个有序的因素?如果不是的话,这似乎是一个缺失的功能,尽管我还没有看到它在 GitHub page 上报告为问题.

我试过了:

y <- forcats::as_factor(c("a", "z", "g"), ordered = TRUE)
is.ordered(y)
# FALSE

如果我不能,那么这样做是否有任何潜在的危险:
y <- ordered(forcats::as_factor(c("a", "z", "g")))

或者最好这样做:
y <- factor(c("a", "z", "g"), levels = unique(c("a", "z", "g")), ordered = TRUE))

最佳答案

看来这确实是一个意想不到的行为。 forcats::as_factor强制在它们出现时对其进行排序,但不知何故没有设置标志。但与 base::factor 结合使用,不需要明确指定顺序,只需设置标志似乎工作正常。

y <- forcats::as_factor(c("a", "z", "g"))
y
[1] a z g
Levels: a z g

is.ordered(y)
[1] FALSE

k <- factor(y, c("a","z","g"), ordered = TRUE)
k
[1] a z g
Levels: a < z < g

is.ordered(k)
[1] TRUE

k2 <- factor( y, ordered = TRUE)
k2
[1] a z g
Levels: a < z < g

is.ordered(k2)
[1] TRUE

k3 <- factor(forcats::as_factor(c("a","g","z")), ordered = TRUE)
k3
[1] a g z
Levels: a < g < z

is.ordered(k3)
[1] TRUE

关于r - forcats::as_factor 可以返回有序因子吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45972983/

相关文章:

r - 如何将 fct_relevel 与 mutate_at 语法结合使用

r - 计算值的唯一组合

r - ezANOVA : 1) how to omit na data? 2) 省略 na 数据后仍然收到错误消息?

r - ggplot2 错误 - 'Discrete value supplied to continuous scale'

r - 在 R 中提取栅格的最快方法(提高我的可重现代码的时间)

r - 使用 purrr/tidyverse 按名称字母顺序对列表进行排序

r - 将 data.table 列中的向量值替换为另一个 data.table 中的相关值的最有效方法是什么?

r - 在 R 中使用 `$` 和 `K` 作为数千美元的 y 轴标签

将多个因子的水平重新编码到指定范围