如何在base R中使用for-loop统计data frame各列unique值数量
R数据框逐列唯一值统计实现(for循环版)
约束适配说明
- 全流程仅使用base R原生功能,无第三方包依赖
- 未调用
n_distinct函数 - 未使用任何apply系列函数(
apply/lapply/sapply/vapply/mapply等) - 核心统计逻辑完全基于for循环编写
- 兼容数值、整数、字符、因子、逻辑等所有类型列,不存在类型适配问题
实现代码
# 请将代码中的df替换为你自己的目标数据框 # 初始化存储统计结果的命名向量,自动匹配数据框原始列名 unique_count <- setNames(integer(ncol(df)), colnames(df)) # 逐列遍历统计唯一值数量 for (col_idx in seq_along(df)) { # 默认统计规则:NA会被计为1个独立唯一值 unique_count[col_idx] <- length(unique(df[[col_idx]])) } # 打印输出结果:返回值为命名向量,名称对应原始列名,值为对应列的唯一值个数 print(unique_count)
可选规则调整:如果不需要把NA计入唯一值统计,把循环内的统计行替换为
unique_count[col_idx] <- length(unique(df[[col_idx]][!is.na(df[[col_idx]])]))即可。
内容的提问来源于stack exchange,提问作者Ruben
相关产品推荐
相关产品推荐

