现有一list对象dm, 内容如下,
[[1]]
[1] "V1" "V2""V3" "V4" "V5" "V6" "V7""V8"
[[2]]
[1] "V1" "V3"
[[3]]
[1] "V3" "V5""V6"
[[4]]
[1] "V1" "V2""V4" "V7" "V8" "V9"
[[5]]
[1] "V3" "V7"
[[6]]
[1] "V8" "V9"
>typeof(dm)
[1] “list”
>typeof(dm[1])
[1] “list”
>typeof(dm[[1]])
[1] “character”
>typeof(dm[[1]][1])
[1] “character”
欲实现如下功能:1、选出出现次数最多的元素,本处为V1(出现3次);2、删除V1所在的集合,本处删除[[1]],[[2]],[[4]],此时dm剩下[[3]],[[5]],[[6]],3、重复以上步骤,即在[[3]],[[5]],[[6]]中再次找到出现次数最多V3,然后删除[[3]],[5]],如果最后剩余的各元素出现次数相同,则取第一个元素(本处最后取到V8),直至dm为NULL。
事实上,length(dm)为20多万,有无高效的实现方法?用循环基本慢的出不了结果了。
多谢各位指教了。