我有一个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)
但是有什么方法可以将这些结合起来以做我想要的事情吗?
答案 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}}放入vector
个list
中,并使用vector
获取计数并将其存储在table
list
可以通过out <- lapply(split(vect, as.integer(gl(length(vect), 100, length(vect)))), table)
ing
rbind
out1 <- do.call(rbind, out)