1

我有一个包含 1-7 随机数的向量,我希望能够确定向量中第一个值之后的下一个数字,以便我可以查找模式并获得一个 7x7 值矩阵,该矩阵显示特定数字跟随另一个。

行中的第一个数字和列中的下一个数字的计数。

我目前正在尝试使用双循环来执行此操作,但在此过程中感到困惑。

例如-

Example vector-

floor(runif(10,1,8))
[1] 3 5 6 6 6 1 7 7 5 3

Answer-

  1  2  3  4  5  6  7
1 0  0  0  0  0  0  1
2 NA NA NA NA NA NA NA
3 0  0  0  0  1  0  0
4 NA NA NA NA NA NA NA
5 0  0  1  0  0  1  0
6 1  0  0  0  0  3  0
7 0  0  0  0  1  0  1
4

1 回答 1

3

给定一个向量

v <- c(3, 5, 6, 6, 6, 1, 7, 7, 5, 3)

如果你调用table()向量,你会得到每个元素的计数

table( v )
# v
# 1 3 5 6 7 
# 1 2 2 3 2

如果你调用table()多个向量,你会得到每个值组合的计数。

由于您想“计算”一个值与其旁边的值一起出现的次数,您可以调用table()原始向量,并将同一个向量向右移动一个值。

table( v[1:(length(v)-1)], v[2:length(v)] )

#  y
# x  1 3 5 6 7
#  1 0 0 0 0 1
#  3 0 0 1 0 0
#  5 0 1 0 1 0
#  6 1 0 0 2 0
#  7 0 0 1 0 1

哪个可以更简洁(由Julius Vainora提供)

table(head(v, -1), tail(v, -1))

注意:结果不包括NA您在问题中得到的行。

于 2018-12-04T00:36:14.117 回答