r - 通过分配不同的矩阵来计算字符的频率
问题描述
我有两个矩阵,“主”和“标签”。
> main
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] 0 0 2 0 1 2 1 1 0 1
[2,] 0 0 1 0 1 2 2 1 2 1
[3,] 0 0 0 1 2 0 2 0 2 0
[4,] 0 0 0 0 2 1 0 2 1 0
[5,] 0 0 0 0 0 2 1 0 1 2
[6,] 0 0 0 0 0 0 2 0 1 2
[7,] 0 0 0 0 0 0 0 0 1 1
[8,] 0 0 0 0 0 0 0 0 0 1
[9,] 0 0 0 0 0 0 0 0 0 0
[10,] 0 0 0 0 0 0 0 0 0 0
> label
[,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
[1,] "0" "0" "G" "0" "C" "G" "F" "E" "0" "A"
[2,] "0" "0" "B" "0" "D" "D" "F" "G" "E" "D"
[3,] "0" "0" "0" "E" "G" "0" "D" "0" "A" "0"
[4,] "0" "0" "0" "0" "A" "D" "0" "F" "E" "0"
[5,] "0" "0" "0" "0" "0" "C" "H" "0" "F" "G"
[6,] "0" "0" "0" "0" "0" "0" "F" "0" "B" "F"
[7,] "0" "0" "0" "0" "0" "0" "0" "0" "F" "E"
[8,] "0" "0" "0" "0" "0" "0" "0" "0" "0" "D"
[9,] "0" "0" "0" "0" "0" "0" "0" "0" "0" "0"
[10,] "0" "0" "0" "0" "0" "0" "0" "0" "0" "0"
通过选择“标签”矩阵中的每个字符,我想获得该字符在“主”矩阵中的位置总数。例如,如果我给“B”,则输出必须为 2(“主”矩阵中位于 B 位置的数字的总和)或通过给“A”,我们必须得到 5。这意味着我们将有不同种类标签的列表,其中每个标签在主矩阵中的频率。像:
A B ...
5 2 ...
解决方案
也许你可以尝试xtabs
或tapply
res <- xtabs(data.frame(c(main),c(label)))
或者
res <- tapply(main,label,sum)
例子
set.seed(1)
main <- matrix(sample(0:2,25,replace = TRUE),nrow = 5)
label <- matrix(sample(c("0",LETTERS[1:3]),25,replace = TRUE),nrow = 5)
res <- xtabs(data.frame(c(main),c(label)))
这样
> res
c.label.
0 A B C
6 7 2 6
推荐阅读
- angular - Angular Observable - 订阅但 html 不输出信息
- python - 如何打印列表中当前元素和前一个元素的总和
- ios - textfield.becomeFirstResponder 没有保持文本字段快速集中
- c - 我怎样才能写一个 if thats 与一个 else 相关,然后在它下面写一个 if 与另一个 else 相关?
- android - 浮动操作按钮背景模糊
- mysql - MySQL GROUP 基于其他列的列,但也排除基于第二列的重复项
- mysql - 我在 MySQL 中的查询没有得到预期的结果
- arrays - 将其内容向后复制到另一个数组的数组无法正常工作
- c - LZW序列实现
- sumo - 如何从 Webots 中的 Highway_overtake.py 访问 SUMO 车辆?