Как сохранить количество определенных символов из матрицы в другой вектор в R - PullRequest
0 голосов
/ 01 июля 2018
> f
[,1] [,2] [,3] 
[1,] "A"  "B"  "A"
[2,] "B"  "B"  "B"
[3,] "B"  "B"  "C"

Давайте рассмотрим, что я сгенерировал матрицу, подобную приведенной выше. Я хочу сохранить количество определенных символов (например, «B») из вышеприведенной матрицы в отдельный вектор.

Я ожидаю такой результат:

f_B
[1] 2 3 1

f_B - другой вектор

Ответы [ 2 ]

0 голосов
/ 01 июля 2018

Вы можете иметь вектор для всех элементов, используя sapply для unique элементов матрицы как:

t(sapply(unique(as.vector(f)),function(x)colSums(f==x)))

#   [,1] [,2] [,3]
# A    1    0    1
# B    2    3    1
# C    0    0    1

Примечание: Приведенное выше решение является расширением взгляда на ответ, предоставленный @akrun

Данные:

f <- matrix(data = c("A","B","A","B","B","B","B","B","C"), byrow = TRUE, nrow = 3)
0 голосов
/ 01 июля 2018

Мы можем использовать colSums по логическому matrix

f_B <- colSums(f == "B")
f_B
#[1] 2 3 1

Если нам нужно получить частоту каждого уникального элемента для каждого из столбцов

table(f, col(f))      
#f   1 2 3
#  A 1 0 1
#  B 2 3 1
#  C 0 0 1

Данные

f <- structure(c("A", "B", "B", "B", "B", "B", "A", "B", "C"), 
  .Dim = c(3L, 3L))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...