R // подмножество матрицы строк и столбцов на основе имен - PullRequest
2 голосов
/ 02 апреля 2020

Я хочу разместить большую матрицу (столбцы и строки) на основе ввода списка (который будет динамически изменяться). Пример (см. Воспроизводимый пример ниже): у меня есть матрица симметрии c (x) и список, содержащий строки и столбец, которые я хочу иметь в своем подмножестве (категориях). Как настроить поднаборы строк и столбцов, чтобы в моих результатах отображались только строки и столбцы для a и c (см. Требуемый вывод)

categories = c("a", "c")

a = c(2,3,4)
b = c(1,9,8)
c = c(5,6,7)

x = cbind(a,b,c)
rownames(x) <- c("a", "b", "c")
x = as.matrix(x)

# attempt: 
result = x[x %in% categories == TRUE]

desired output 
a = c(2,4)
c = c(5,7)
y = cbind(a,c)
rownames(y) <- c("a", "c")
y = as.matrix(y)

1 Ответ

1 голос
/ 02 апреля 2020

Вы также можете подмножество имен.

y <- x[c("a", "c"), c("a", "c")]
y
#   a c
# a 2 5
# c 4 7

Или, используя subset

y <- subset(x, colnames(x) %in% c("a", "c"), 
            rownames(x) %in% c("a", "c"))
y
#   a c
# a 2 5
# c 4 7
...