使用
pick()
拉出那些柱子
tst %>%
group_by(ID, time) %>%
mutate(any_v = any(pick(all_of(variables))))
# ID time v1 v2 any_v
# <chr> <dbl> <lgl> <lgl> <lgl>
# 1 1a 1 TRUE FALSE TRUE
# 2 1b 1 FALSE TRUE TRUE
# 3 1c 1 FALSE FALSE FALSE
# 4 1a 2 TRUE FALSE TRUE
# 5 1b 2 TRUE TRUE TRUE
# 6 1c 2 FALSE FALSE FALSE
如果你加上,你会得到相同的答案
v3
所有TRUE值
tst %>%
mutate(v3=TRUE) %>%
group_by(ID, time) %>%
mutate(any_v = any(pick(all_of(variables))))
# ID time v1 v2 v3 any_v
# <chr> <dbl> <lgl> <lgl> <lgl> <lgl>
# 1 1a 1 TRUE FALSE TRUE TRUE
# 2 1b 1 FALSE TRUE TRUE TRUE
# 3 1c 1 FALSE FALSE TRUE FALSE
# 4 1a 2 TRUE FALSE TRUE TRUE
# 5 1b 2 TRUE TRUE TRUE TRUE
# 6 1c 2 FALSE FALSE TRUE FALSE
或者,如果您一直想使用任何以“v”开头的列,请使用
tst %>%
mutate(v3=TRUE) %>%
group_by(ID, time) %>%
mutate(any_v = any(pick(starts_with("v"))))
# ID time v1 v2 v3 any_v
# <chr> <dbl> <lgl> <lgl> <lgl> <lgl>
# 1 1a 1 TRUE FALSE TRUE TRUE
# 2 1b 1 FALSE TRUE TRUE TRUE
# 3 1c 1 FALSE FALSE TRUE TRUE
# 4 1a 2 TRUE FALSE TRUE TRUE
# 5 1b 2 TRUE TRUE TRUE TRUE
# 6 1c 2 FALSE FALSE TRUE TRUE