Я сделаю:
library(data.table)
dt <- data.table(var1 = 1:10, var1_n = 1:10, var2_n = 1:10)
dt
# var1 var1_n var2_n
# <int> <int> <int>
# 1: 1 1 1
# 2: 2 2 2
# 3: 3 3 3
# 4: 4 4 4
# 5: 5 5 5
# 6: 6 6 6
# 7: 7 7 7
# 8: 8 8 8
# 9: 9 9 9
# 10: 10 10 10
to_rm <- grep("_n$", names(dt), value = TRUE)
dt[, (to_rm) := NULL]
dt
# var1
# <int>
# 1: 1
# 2: 2
# 3: 3
# 4: 4
# 5: 5
# 6: 6
# 7: 7
# 8: 8
# 9: 9
# 10: 10
или, может быть, проще:
dt <- data.table(var1 = 1:10, var1_n = 1:10, var2_n = 1:10)
dt[, .SD, .SDcols = grep("_n$", names(dt), invert = TRUE, value = TRUE)]
Это также будет работать:
dt <- data.table(var1 = 1:10, var1_n = 1:10, var2_n = 1:10)
to_keep <- grep("_n$", names(dt), invert = TRUE, value = TRUE)
dt[, ..to_keep]