在另一个 df 的相同位置用 NA 替换值

Replace Values with NA by same position in another df

我有两个数据框:

df1
 Col1     Col2      Col3     Col4
    1        0         3        5 
   NA        1        NA        0
    2        3        NA        5

df2
 Col1     Col2      Col3     Col4
    7        0         5        7 
    0        8         0        0
    9        9         6        2

如何在 df1 的相同位置用 NA 替换 df2

我希望我的最终 df3 看起来像这样:

 Col1     Col2      Col3     Col4
    7        0         5        7 
   NA        8        NA        0
    9        9        NA        2

在我看来,与 tidyverse 相比,基础 R 的装备更好:

df2[is.na(df1)] <- NA

给出:

> df2
  Col1 Col2 Col3 Col4
1    7    0    5    7
2   NA    8   NA    0
3    9    9   NA    2

如果你真的需要df3:

df3 <- df2
df3[is.na(df1)] <- NA
df3=`is.na<-`(df2,is.na(df1))
df3
  Col1 Col2 Col3 Col4
1    7    0    5    7
2   NA    8   NA    0
3    9    9   NA    2

甚至

df3=replace(df2,is.na(df1),NA)
 df3
  Col1 Col2 Col3 Col4
1    7    0    5    7
2   NA    8   NA    0
3    9    9   NA    2