如何在R语言中统计数值向量的前导零个数
R语言统计向量前导零数量的实现方法
我们需要统计数值向量起始位置连续出现的零的个数,可通过以下两种常用方案实现:
方案1:基础R实现(性能更优)
核心逻辑是找到第一个非零元素的位置,减1即为前导零数量,同时兼容全零向量的边界场景:
# 自定义统计函数 count_leading_zeros <- function(x) { if (all(x == 0)) { return(length(x)) } return(min(which(x != 0)) - 1) } # 示例测试 vect1 <- c(0, 0, 0, 60, 40, 80, 0) vect2 <- c(100, 0, 0, 80, 40) vect3 <- c(0,0,1,2,3) vect4 <- c(0,0,0,0) # 全零测试用例 count_leading_zeros(vect1) # 返回3 count_leading_zeros(vect2) # 返回0 count_leading_zeros(vect3) # 返回2 count_leading_zeros(vect4) # 返回4
方案2:基于rle函数实现(写法更简洁)
利用R内置的rle()函数统计连续重复值的特性,直接读取首段连续零的长度即可:
count_leading_zeros_rle <- function(x) { rle_res <- rle(x) ifelse(rle_res$values[1] == 0, rle_res$lengths[1], 0) } # 测试效果和方案1完全一致 count_leading_zeros_rle(vect1) # 返回3 count_leading_zeros_rle(vect2) # 返回0
内容的提问来源于stack exchange,提问作者tfr950
相关产品推荐
相关产品推荐

