Dan*_*nny 5 r tidyverse forcats
可以as_factor从forcats返回有序因子吗?虽然我没有看到它在GitHub 页面上报告为问题,但它似乎是一个缺失的功能。
我试过了:
y <- forcats::as_factor(c("a", "z", "g"), ordered = TRUE)
is.ordered(y)
# FALSE
Run Code Online (Sandbox Code Playgroud)
如果我不能,那么这样做是否有任何潜在危险:
y <- ordered(forcats::as_factor(c("a", "z", "g")))
Run Code Online (Sandbox Code Playgroud)
或者最好这样做:
y <- factor(c("a", "z", "g"), levels = unique(c("a", "z", "g")), ordered = TRUE))
Run Code Online (Sandbox Code Playgroud)
看来这确实是一个意想不到的行为。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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
280 次 |
| 最近记录: |