我有一个向量,该向量具有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
答案 0 :(得分: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
行。