r - dplyr::select() 对可能不存在的列重新排序
问题描述
在 dplyr 中,如何根据包含在 tibble 中可能存在或不存在的变量的列名称的字符向量对 tibble 的列重新排序?
我试过select_if(names(.) %in% col_vector)
了,但这并没有对列重新排序。
例子:
set.seed(1)
col_order <- c("a", "b", "c", "d", "e")
tibby <- tibble(d = rnorm(10), b = runif(10), a = rnorm(10))
select_if(tibby, names(tibby) %in% col_order)
# A tibble: 10 x 3
# d b a
# <dbl> <dbl> <dbl>
# 1 -0.626 0.935 -0.0449
# 2 0.184 0.212 -0.0162
# 3 -0.836 0.652 0.944
# 4 1.60 0.126 0.821
# 5 0.330 0.267 0.594
# 6 -0.820 0.386 0.919
# 7 0.487 0.0134 0.782
# 8 0.738 0.382 0.0746
# 9 0.576 0.870 -1.99
# 10 -0.305 0.340 0.620
解决方案
你可以做:
select(tibby, one_of(col_order))
a b d
<dbl> <dbl> <dbl>
1 -0.0449 0.935 -0.626
2 -0.0162 0.212 0.184
3 0.944 0.652 -0.836
4 0.821 0.126 1.60
5 0.594 0.267 0.330
6 0.919 0.386 -0.820
7 0.782 0.0134 0.487
8 0.0746 0.382 0.738
9 -1.99 0.870 0.576
10 0.620 0.340 -0.305
推荐阅读
- java - 反转二维数组中字符串的顺序 - Java
- android - 材质滑块和范围滑块工具提示并不总是可见
- telegram - Rasa 遇到 Telegram 错误:“开始”不在列表中
- javascript - Expressjs:无法在 Postman 中设置 httpOnly cookie。邮递员 cookie 选项卡中没有响应 cookie
- visual-studio-code - Emmet 自动完成不适用于 SASS VSCode
- google-cloud-platform - 在谷歌云计算引擎实例上运行冗长的脚本
- python - CS50 项目 1 搜索栏 问题:如何使搜索栏过滤条目以找到可能的条目并将它们显示在列表中?
- php - 我无法在 laravel 中的数据表中添加列
- c# - 如何通过索引或更好的方式访问另一个类中的泛型类方法?
- ruby-on-rails - 如何在 Rails 中只启动一次模块