(这个问题可能是重复的,但是我还没被问到...)
使用dplyr
技术,如何同时通过名称和值从data.frame
中选择列?例如以下内容(无效):
> data.frame(x=4, y=6, z=3) %>%
select_if(matches('x') | mean(.) > 5)
Error: No tidyselect variables were registered
在基数R中,我将执行以下操作:
> df <- data.frame(x=4, y=6, z=3)
> df[names(df) == 'x' | colMeans(df) > 5]
x y
1 4 6
答案 0 :(得分:6)
您可以使用select
和逗号,colMeans
data.frame(x=4, y=6, z=3) %>%
select(matches("x"), which(colMeans(.) > 5))
x y
1 4 6
答案 1 :(得分:1)
我们可以使用select_if
根据条件提取列名称,并将select
中的列名称用于匹配'x'的列名称
data.frame(x=4, y=6, z=3) %>%
select(matches("x"), names(select_if(., ~ mean(.x) > 5)))
# x y
#1 4 6
注意:在这里我们使用select_if
,因为OP希望具体地给出答案。否则,可以通过许多其他方式完成