Используя dplyr
, есть ли способ выборочно изменять столбцы по строкам без использования rowwise()
?
Например, учитывая приведенный ниже ввод, я хочу заменить отрицательные числа нулями в столбцах с префиксом "pre _ ":
df <- data.frame(a=c(-5, 3, 4, 5), b=4:1, pre_c=c(-1, -5, 3, 10), pre_d=c(-6, 5, -12, 0))
# a b pre_c pre_d
# 1 -5 4 -1 -6
# 2 3 3 -5 5
# 3 4 2 3 -12
# 4 5 1 10 0
Мой желаемый вывод:
# a b pre_c pre_d
# 1 -5 4 0 0
# 2 3 3 0 5
# 3 4 2 3 0
# 4 5 1 10 0
Это может быть достигнуто с rowwise()
и mutate_at()
:
df %>%
rowwise() %>%
mutate_at(vars(starts_with("pre_")), funs(max(0, .)))
Есть лидругой способ сделать это?