将随机操作应用于列组

Applying random operations to groups of columns

假设我有以下数据集:

id = 1:100
var_1 = rnorm(100,100,100)
var_2 = rnorm(100,100,100)
var_3 = rnorm(100,100,100)
var_4 = rnorm(100,100,100)
my_data = data.frame(id, var_1, var_2, var_3, var_4)

我发现以下代码可以用 NA 替换列中的条目:

my_data$var_1[sample(nrow(my_data),25)]<-NA
my_data$var_2[sample(nrow(my_data),25)]<-NA
my_data$var_3[sample(nrow(my_data),20)]<-NA
my_data$var_4[sample(nrow(my_data),20)]<-NA

但是有什么办法可以确保var_1和var_2中相同的条目被替换为NA,var_3和var_4中的相同条目被替换与 NA?

参考:

像这样?

library(data.table)
setDT(my_data)
my_data[sample(.N, 25), c('var_1', 'var_2'):=NA]
my_data[sample(.N, 25), c('var_3', 'var_4'):=NA]
my_data[1:10]
##     id     var_1      var_2      var_3      var_4
##  1:  1  37.35462  37.963332         NA         NA
##  2:  2 118.36433 104.211587  268.88733  -4.729815
##  3:  3  16.43714   8.907835  258.65884 297.133739
##  4:  4 259.52808 115.802877   66.90922  61.636789
##  5:  5        NA         NA -128.52355 265.414530
##  6:  6  17.95316 276.728727  349.76616 251.221269
##  7:  7 148.74291 171.670748         NA         NA
##  8:  8 173.83247 191.017423  154.13273 156.722091
##  9:  9 157.57814 138.418536   98.66005  -2.454848
## 10: 10  69.46116 268.217608  151.01084 132.300650