Сначала вы можете найти столбцы, которые имеют только числа, используя grep
, затем вы можете получить соответствующие столбцы "Background"
и вычесть.
cols <- grep('^\\d+$', names(df), value = TRUE)
new_cols <- paste0(cols, '_corrected')
df[new_cols] <- df[cols] - df[paste0('Background_', cols)]
df[c("Wavelength", new_cols)]
# Wavelength 1_corrected 2_corrected
#1 300 6 8
#2 301 9 5
данные
df <- structure(list(Wavelength = 300:301, Background_1 = c(5L, 3L),
`1` = 11:12, Background_2 = 4:5, `2` = c(12L, 10L)),
class = "data.frame", row.names = c(NA, -2L))