如何在R语言中无需循环将数值向量按阈值转换为二进制向量?
基于阈值将连续向量转为二值向量(R语言)
完全不用写for循环,R本身的向量化操作就能高效解决这个问题,给你几种简单的实现方式:
方法1:利用逻辑值转整数(最简洁)
在R中,逻辑值TRUE会被自动转换为1,FALSE转换为0,直接对比较结果做类型转换或者用+符号就能得到二值向量:
# 方法1a:用as.integer转换 vals_bnry <- as.integer(vals > th) # 方法1b:更简洁的写法,用+强制转换 vals_bnry <- +(vals > th)
方法2:用ifelse函数(更直观)
ifelse函数可以直接根据条件返回对应值,逻辑清晰,适合刚接触R的人:
vals_bnry <- ifelse(vals > th, 1, 0)
验证结果
你的示例中所有vals元素都小于阈值0.5,所以运行后vals_bnry会是全0的向量:
> vals_bnry [1] 0 0 0 0 0
内容的提问来源于stack exchange,提问作者user21573410
相关产品推荐
相关产品推荐

