首页 > 解决方案 > 如果布尔数据框在 R 中的位置为真,如何获取数字数据框值?

问题描述

我们有两个数据框,一个是布尔类型,另一个是数字。
我需要从 d_num 中检索其中一个值,其中 d_bool 为 TRUE,否则为 NA。

有没有针对这个问题的矢量化方法?

d_bool= data.frame(a = c(F,F,T,F,T),
                   b = c(F,F,F,F,T))

d_num = data.frame(a = c(1.0, 4.0, 2.0 ,4.1 ,6.8),
                   b = c(21.9 ,34.0 ,4.7 ,5.1 ,2.0))

所需输出

d= data.frame(a= c(NA,NA,2.0, NA,6.8),
              b= c(NA,NA,NA,NA,2.0)

标签: rdataframe

解决方案


您可以否定这些d_bool值并将其用于子集d_num和分配NA

d_num[!d_bool] <- NA

d_num
#    a  b
#1  NA NA
#2  NA NA
#3 2.0 NA
#4  NA NA
#5 6.8  2

推荐阅读