遍历前100个值,然后遍历下100个值

时间:2019-04-09 11:39:42

标签: r vector split

我有一个True和False值的向量。向量的长度是1000。

vect <- [T T F T F F..... x1000]

我想循环遍历前100个(即1:100)值并计算正确和错误值的计数并将结果存储到某个变量中(例如True <-51,False <-49)。然后循环访问下一个100个值(101:200),并像以前一样进行计算,依此类推,直到达到1000。

下面的代码非常标准,但是它没有对向量进行切片,而是计算整个向量的和。

count_True = 0
count_False = 0
for (i in vect){
    if (i == 'T'){
        count_True = count_True + 1
    }
    else {
        count_false = count_false + 1
    }
}

我知道您可以将向量分割为

vect_splt <- split(vect,10)

但是有什么方法可以将这些结合起来以做我想要的事情吗?

2 个答案:

答案 0 :(得分:1)

做这样的事情:

set.seed(42)
vect <- sample(rep(c(T, F), 500))

vect <- tibble(vect)
vect %>%
  mutate(seq = row_number() %/% 100) %>%
  group_by(seq) %>%
  summarise(n_TRUE = sum(vect),
            n_FALSE = sum(!vect))
# A tibble: 11 x 3
     seq n_TRUE n_FALSE
   <dbl>  <int>   <int>
 1     0     42      57
 2     1     56      44
 3     2     50      50
 4     3     55      45
 5     4     43      57
 6     5     48      52
 7     6     48      52
 8     7     54      46
 9     8     51      49
10     9     53      47
11    10      0       1

答案 1 :(得分:0)

我们可以在split中使用table。使用gl创建的分组索引,将split的{​​{1}}放入vectorlist中,并使用vector获取计数并将其存储在table

list

可以通过out <- lapply(split(vect, as.integer(gl(length(vect), 100, length(vect)))), table) ing

将其转换为单个数据集
rbind

数据

out1 <- do.call(rbind, out)