Вот лучший подход.(по возможности следует избегать использования <<-
)
summing <- function(data, letter, pattern = paste0(letter,"$")){
data[[letter]] <- rowSums(data[,grepl(pattern,names(data),)], na.rm = T)
return(data)
}
Эта функция особенно удобна при работе с трубой:
library(magrittr)
df %>% summing("x") %>% summing("y")
# the_first_x the_second_x the_first_y the_second_y x y
#1 0 10 0 5 10 5
#2 0 0 5 5 0 10
#3 10 10 5 0 20 5
#4 0 0 5 0 0 5
Конечно, вы можете использовать еебез канала:
ans <- summing(df, "x")
summing(ans, "y")
Аргумент pattern
принимает регулярное выражение .При этом он очень общий и конкретный, к каким столбцам вы хотите добавить.