我想从我的tibble中选择以字母R结尾但不以字符串“hc”开头的列。例如,如果我有一个类似以下的数据框:
name hc_1 hc_2 hc_3r hc_4r lw_1r lw_2 lw_3r lw_4
Joe 1 2 3 2 1 5 2 2
Barb 5 4 3 3 2 3 3 1
为了实现我的目标,我尝试了许多选项,但让我惊讶的是,这个选项不起作用:
library(tidyverse)
data %>%
select(ends_with("r"), !starts_with("hc"))
当我尝试它时,出现以下错误:
错误:
!starts_with("hc")
必须评估为列位置或名称,而不是逻辑向量。我也尝试使用 negate(),但收到相同的错误。
library(tidyverse)
data %>%
select(ends_with("r"), negate(starts_with("hc")))
错误:
negate(starts_with("hc"))
必须返回列的位置或名称,不能是一个函数。
我想在dplyr的select函数中保留答案,因为一旦我选择了变量,我将使用mutate_at将它们反转,因此最好使用整洁的解决方案。
谢谢!
starts_with/end_with
方法,那么你可以使用另一组-starts_with("jw")
,因为这只能匹配单个模式。否则,你可能需要使用matches
,就像其他答案中的matches("^lw.*r$")
一样。 - akrun