r - 如何使用带管道的混合排序重新调平?
问题描述
如何在同一管道中使用 dplyr 和混合排序重新调整因子?
df %>%
relevel(.$var, mixedsort(levels(.$var)))
即使 var 是一个因素,也会导致错误消息“'relevel' only for (unordered) factors”。我也尝试过使用 magrittr 管道,relevel(var, mixedsort(levels(var)))
但无济于事。
我想这可以通过保存混合排序(levels(var))然后从 relevel 函数中调用它来完成,但如果可能的话,我想在一个 relevel 调用中完成所有操作。
解决方案
我们可以用 包装{}
,但是,relevel
ref
只需要一个元素
library(dplyr)
library(gtools)
iris %>%
{relevel(.$Species, mixedsort(levels(.$Species))[1])}
或更改级别的顺序,应用factor
iris %>%
{factor(.$Species, levels = mixedsort(levels(.$Species)))}
如果我们想重新排序,另一种选择是fct_relevel
library(forcats)
iris %>%
{fct_relevel(.$Species, mixedsort(levels(.$Species)))}
或者当我们使用dplyr
时,在mutate
or中执行transmute
,然后pull
(transmute
如果只需要一个列然后想要pull
作为`向量)
iris %>%
transmute(Species = factor(Species, levels = mixedsort(levels(Species)))) %>%
pull(Species)
如果我们需要完整的列集,请使用mutate
iris1 <- iris %>%
mutate(Species = factor(Species, levels = mixedsort(levels(Species))))
推荐阅读
- configuration - Symfony Messenger / RabbitMQ 检测请求消息
- r - Seurat 中的 FindVariableFeatures 函数产生“匹配错误(x,表,nomatch = 0L):'匹配'需要向量参数”
- floating-point - 奇怪的 x87 结果:sin(1)-sin(1)=1.73472e-18
- vb.net - 使用 Visual Basic 绘制交互式网格
- python - 如何构建一个可以在安装后从终端全局初始化的 Python 应用程序?
- javascript - 无法让javascript和Jquery在functions.php中工作
- java - Spring data Jpa 将具有一些不同字段的多个 SQL 视图映射到单个实体中
- javascript - 虽然服务器正在运行,但 eslint 没有 linting
- python - 熊猫预处理后无法执行函数
- javascript - 在 Leaflet 中创建具有不同圆圈大小的图例