将其转换为矩阵:
dat.m <- as.matrix(dat)
dat.m[sel.mat] <- NA
> dat.m
V1 V2
[1,] 0.2539189 NA
[2,] 0.5216975 NA
[3,] 0.1206138 0.14714848
[4,] 0.2841779 0.52352209
[5,] 0.3965337 NA
[6,] 0.1871074 0.23747235
[7,] 0.2991774 NA
[8,] NA 0.09509202
[9,] 0.4636460 0.59384430
[10,] 0.5493738 0.92334630
[11,] 0.7160894 NA
[12,] 0.9568567 0.80398264
Edit解释一下为什么我们的 data.frame 出现错误
dat.m[sel.mat] <- NA
相当于执行以下操作:
temp <- dat
dat <- "[<-"(temp, sel.mat, value=NA)
Error in `[<-.data.frame`(temp, sel.mat, value = NA) :
only logical matrix subscripts are allowed in replacement
现在我可以执行以下操作并且它有效:
dat <- "[<-"(as.matrix(temp), sel.mat, value=NA)