计算列表中的外观数量,技巧?

时间:2016-02-22 10:04:04

标签: r list find-occurrences

我有一个1和0的矩阵。有关此表的规则如下。

我想计算一个1,1的系列出现的次数(其中1不是以0分隔!)并且为1,1,1的系列做同样的事情。我尝试过colSums,但它似乎不太合适。

矩阵最终是

occ <- matrix()
occ_temp <- matrix
for (j in 1:nrow(final)){
  for (i in 2:7){
    if (sum(final[j,i-1:i])==2){occ_temp[j,i-1]=1}
  }
occ[j] <- sum(occ_temp)
}

因此,对于第一排,我希望有1次1,1,1和0次的系列赛1,1,1。对于第4排,我希望0次能够获得1,1次,但是1次能够获得1,1,1次。

任何人都可以告诉我,对于1,1的系列,以下代码有什么问题吗?

    function nextQuestion(){
    var curr = $(".question:visible");
    var next = curr.next(".question");
    next.show();
    curr.hide();
    if (!next.next(".question").length) {
        $("button").attr('disabled', 'disabled');
         $("button").text("End of Test");
    }
}

$('#2, #3, #4, #5, #6, #7, #8, #9, #10, #11, #12, #13, #14, #15, #16, #17, #18, #19, #20, #21, #22, #23, #24, #25 ').hide();
$('#next').click(nextQuestion);
$('a.mcqtest').click(nextQuestion);

1 个答案:

答案 0 :(得分:1)

我们可以使用apply遍历行,使用rle获取游程长度类型,提取lengthsvalues的{​​{1}},检查是否为sum等于'n1'和'n2',得到n1 <- 2 n2 <- 3 res <- t(apply(m1, 1, FUN=function(x) { x1 <- with(rle(x), lengths[!!values]) c(sum(x1==n1), sum(x1==n2)) })) colnames(res) <- paste0("count", c(11, 111)) res # count11 count111 # [1,] 1 0 # [2,] 1 0 # [3,] 1 0 # [4,] 0 1 # [5,] 1 0 # [6,] 1 0 # [7,] 0 0 # [8,] 1 0 # [9,] 2 0 #[10,] 1 0 #[11,] 1 0 #[12,] 1 0 #[13,] 0 0 #[14,] 0 0 #[15,] 0 0

test