如何在数据框中使用 NA 进行列乘法?

How to do column multiplication with NAs in dataframe?

例如,如果这是我的 df。

df<-data.frame(a=c(1,0,1,1,0), b=c(1,NA,NA,3,5),c=c(NA,2,4,NA,NA))

df  
  a  b  c
  1  1 NA
  0 NA  2
  1 NA  4
  1  3 NA
  0  5 NA

我想创建一个函数,当 a 列中的值等于 1 时,将 bc 列与标量 2 相乘,并将两个 bc 列,当列 a 中的值等于 0 时,标量为 4。 此外,我不想删除任何 NA 或将它们转换为 0,因此所有 NA 单元格都应提醒相同。预期结果如下所示。

  a  b  c
  1  2 NA
  0 NA  8
  1 NA  8
  1  6 NA
  0 20 NA

我尝试使用na.rm或na.omit,但它们并不能真正满足我的需要。对此的任何帮助将不胜感激。提前致谢!

df[df$a==0,-1]=df[df$a==0,-1]*4
df[df$a==1,-1]=df[df$a==1,-1]*2
 df
  a  b  c
1 1  2 NA
2 0 NA  8
3 1 NA  8
4 1  6 NA
5 0 20 NA