我需要用另一个data.frame
过滤data.frame
才能插入NA
值。这里缺少的部分是如何在没有循环的情况下执行此操作。我认为下面的简化示例应该是不言自明的:
rm(list = ls())
set.seed(214)
suppressPackageStartupMessages(library(tidyverse))
mydata <- tibble(V1 = runif(100), V2 = runif(100), V3 = runif(100), V4 = runif(100))
myfilter <- tibble(F1 = runif(100), F2 = runif(100), F3 = runif(100), F4 = runif(100))
fltr <- myfilter > 0.8
mydata_filtered <- mydata
for (i in 1:nrow(mydata)) {
mydata_filtered[i, which(fltr[i,])] <- NA
}
回答了很多类似的问题,但是我不知道如何在不使用循环的情况下插入所需的NA值。大多数回答的问题都涉及不同的列或行,或者所需的结果只是原始data.frame
的一部分。
因此,输出将是这样的:
> mydata
# A tibble: 100 x 4
V1 V2 V3 V4
<dbl> <dbl> <dbl> <dbl>
1 0.320 0.332 0.705 0.975
2 0.932 0.592 0.653 0.526
3 0.516 0.00137 0.848 0.983
4 0.420 0.751 0.189 0.742
5 0.842 0.837 0.588 0.166
> fltr
F1 F2 F3 F4
[1,] FALSE TRUE FALSE TRUE
[2,] FALSE FALSE FALSE TRUE
[3,] FALSE FALSE FALSE FALSE
[4,] TRUE TRUE FALSE FALSE
[5,] FALSE TRUE TRUE FALSE
# A tibble: 100 x 4
V1 V2 V3 V4
<dbl> <dbl> <dbl> <dbl>
1 0.320 NA 0.705 NA
2 0.932 0.592 0.653 NA
3 0.516 0.00137 0.848 0.983
4 NA NA 0.189 0.742
5 0.842 NA NA 0.166
答案 0 :(得分:3)
我认为这应该可行:
mydata[fltr] <- NA