Как подмножить матрицу в один столбец, сохранить тип данных матрицы, поддерживать имена строк/столбцов?

Когда я подмножаю матрицу на один столбец, результат имеет числовое число, а не матрицу (например, myMatrix [, 5] для подмножества к пятому столбцу). Есть ли компактный способ подмножества в один столбец, поддерживать формат матрицы и поддерживать имена строк/столбцов, не делая ничего сложного, например:

matrix( myMatrix[ , 5 ] , dimnames = list( rownames( myMatrix ) , colnames( myMatrix )[ 5 ] )

Ответ 1

Используйте аргумент drop=FALSE для [.

m <- matrix(1:10,5,2)
rownames(m) <- 1:5
colnames(m) <- 1:2
m[,1]             # vector
m[,1,drop=FALSE]  # matrix

Ответ 2

Для data.frame (вопрос, помеченный как дубликат этого вопроса, хотя эти вопросы не являются дубликатами), аккуратный способ с помощью dplyr:

mtcars %>% dplyr::select("wt")