R语言循环判断数据框各列唯一值数量是否超过2的实现方法
R实现判断数据框每列唯一值数量是否大于2
方法1:for循环实现(匹配你提供的伪代码逻辑)
直接按照你写的伪代码思路补全逻辑即可,通过length(unique(列数据))计算单列唯一值的数量:
for (n in colnames(Arthritis)) { # 计算当前列的唯一值数量 unique_nums <- length(unique(Arthritis[[n]])) # 按判断条件执行对应逻辑 if (unique_nums > 2) { # 此处写唯一值大于2时的处理逻辑,示例为打印结果 print(paste0("列【", n, "】唯一值数量为", unique_nums, ",大于2")) } else { # 此处写唯一值不大于2时的处理逻辑 print(paste0("列【", n, "】唯一值数量为", unique_nums, ",不大于2")) } }
运行上述代码输出结果如下:
[1] "列【Treatment】唯一值数量为2,不大于2" [1] "列【Sex】唯一值数量为2,不大于2" [1] "列【Age】唯一值数量为37,大于2" [1] "列【Improved】唯一值数量为3,大于2"
方法2:向量化批量计算(更简洁高效)
如果不需要逐列做复杂的循环内操作,用sapply可以一行代码直接得到所有列的判断结果:
# 返回命名逻辑向量,值为TRUE对应列的唯一值数量大于2 col_gt2 <- sapply(Arthritis, function(x) length(unique(x)) > 2) print(col_gt2)
输出结果:
Treatment Sex Age Improved FALSE FALSE TRUE TRUE
内容的提问来源于stack exchange,提问作者Eisen
相关产品推荐
相关产品推荐

