【问题标题】:select and rename stored in variable选择并重命名存储在变量中
【发布时间】:2017-07-13 14:16:36
【问题描述】:

我有几个相似的数据框,它们有很多共同的列。我想从任何表中选择并重命名这些列的子集。

library(tidyverse)
mtcars %>% 
select(my_mpg = mpg, 
       cylinders = cyl,
       gear)

有没有可能做类似的事情

my_select_rename <- c("my_mpg"="mpg","cylinders"="cyl","gear")

mtcars %>% 
   select_(.dots = my_select_rename)

但改用 tidyeval 框架?

【问题讨论】:

  • 你愿意接受基本的 R 方法吗?
  • 我更喜欢类似于旧标准评估解决方案但使用新 dplyr 版本的解决方案
  • 这里已经回答了这个问题:stackoverflow.com/questions/44984428/…

标签: r dplyr rlang tidyeval


【解决方案1】:

我想你想要:

my_select <- c("mpg","cyl","gear")
my_select_rename <- c("my_mpg","cylinders","gear")

mtcars %>% 
   select_at(vars(my_select)) %>%
   setNames(., my_select_rename)

                    my_mpg cylinders gear
Mazda RX4             21.0         6    4
Mazda RX4 Wag         21.0         6    4
Datsun 710            22.8         4    4
Hornet 4 Drive        21.4         6    3
Hornet Sportabout     18.7         8    3

【讨论】:

  • 对我来说,这不会重命名变量
  • 谢谢@Mike H。对不起,我只是想他想按名称选择列...让我编辑我的帖子。
【解决方案2】:

lionel 对这个问题的回答 group_by by a vector of characters using tidy evaluation semantics 提供了答案

mtcars %>% 
    select(!!! rlang::syms(my_select_rename))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-14
    • 1970-01-01
    • 2014-07-26
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    相关资源
    最近更新 更多