Browse code

check the dimention of a list from tapply()

Zuguang Gu authored on 15/04/2019 21:20:30
Showing 1 changed files

... ...
@@ -420,7 +420,7 @@ make_comb_mat = function(..., mode = c("distinct", "intersect", "union"),
420 420
 	mode = match.arg(mode)[1]
421 421
 	if(length(lt) == 1) {
422 422
 		lt = lt[[1]]
423
-		if(!is.null(dim(lt))) {
423
+		if(length(dim(lt)) == 2) { # a matrix
424 424
 			m = make_comb_mat_from_matrix(lt, mode = mode, top_n_sets = top_n_sets, 
425 425
 				min_set_size = min_set_size, universal_set = universal_set, complement_size = complement_size)
426 426
 			if(remove_empty_comb_set) {
... ...
@@ -512,6 +512,7 @@ set_size = function(m) {
512 512
 #
513 513
 # == param
514 514
 # -m A combination matrix returned by `make_comb_mat`.
515
+# -degree degree of the intersection. The value can be a vector.
515 516
 #
516 517
 # == value
517 518
 # A vector of sizes of the combination sets.
... ...
@@ -523,8 +524,13 @@ set_size = function(m) {
523 524
 #           c = sample(letters, 20))
524 525
 # m = make_comb_mat(lt)
525 526
 # comb_size(m)
526
-comb_size = function(m) {
527
-	structure(attr(m, "comb_size"), names = comb_name(m))
527
+comb_size = function(m, degree = NULL) {
528
+	x = structure(attr(m, "comb_size"), names = comb_name(m))
529
+	if(is.null(degree)) {
530
+		return(x)
531
+	} else {
532
+		x[comb_degree(m) %in% degree]
533
+	}
528 534
 }
529 535
 
530 536
 # == title