r语言 - 使用 dplyr::cross 执行 dplyr::select



我有一个数据(df_1(:

df_1 <- structure(list(var_1 = c(99.4726192392409, 25.9155194833875), 
var_2 = c(99.9599985964596, 20.3848657943308), var_3 = c(93.1612774543464, 
31.651863809675), var_4 = c(54.2802151478827, 81.9601702317595
), var_5 = c(88.1385736726224, 94.7823309898376), var_6 = c(83.7288120947778, 
72.2155329957604), groups = structure(c(1L, 1L), .Label = c("1", 
"2", "3"), class = "factor")), row.names = c(1L, 10L), class = "data.frame")

我试过了:

library(dplyr)
df_1 %>% 
select_at(.vars = 'var_1')
var_1
1  99.47262
10 25.91552

还行。但:

df_1 %>% 
select(across(.cols = 'var_1'))

错误:across()只能在 dplyr 谓词中使用。

如何使用selectacross调整最后一个功能?

从选择或交叉的github页面中,没有selectacross一起使用的用例。 根据?across文献

across(( 可以轻松地将相同的转换应用于多个列,允许您在 summarise(( 和 mutate(( 中使用 select(( 语义。 across(( 取代了 summarise_at((、summarise_if(( 和 summarise_all(( 等"作用域变体"系列。有关更多详细信息,请参阅小插图("colwise"(。

没有提到与select一起使用

在当前版本中,select可以采用不带引号和带引号的变量

library(dplyr)
df_1 %>%
select('var_1')
#     var_1
#1  99.47262
#10 25.91552
df_1 %>% 
select('var_1', 'var_2')
#      var_1    var_2
#1  99.47262 99.96000
#10 25.91552 20.38487

df_1 %>% 
select(var_1, var_2)

或者利用select_helpersstarts_with/ends_with/matches/contains

df1_1 %>% 
select(starts_with('var'))
#       var_1    var_2
#1  99.47262 99.96000
#10 25.91552 20.38487

最新更新