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

84

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

matrix( myMatrix[ , 5 ] , dimnames = list( rownames( myMatrix ) , colnames( myMatrix )[ 5 ] )
SFun28
источник

Ответы:

122

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

m <- matrix(1:10,5,2)
rownames(m) <- 1:5
colnames(m) <- 1:2
m[,1]             # vector
m[,1,drop=FALSE]  # matrix
Джошуа Ульрих
источник
Я бы поклялся, что видел это совсем недавно, но, возможно, ставился под вопрос аналогичное поведение
фрейма данных
5
Если вы хотите индексировать только по первому измерению, можете ли вы использовать drop следующим образом:m[1,,drop=FALSE]
Кевин Буллахи,
Чтобы привести пример на статистической основе, используя расстояния Кука D, а затем выбирая значения на основе значения отсечения, например 0,1, это приведет к значениям cooksD с соответствующим им количеством строк в относительном наборе данных cooksd<-as.data.frame(cooks.distance(ft1)) cooksD_outliers<-cooksd[cooksd>0.1,drop=FALSE,]
Elias EstatisticsEU
result <-apply (temp, 1, function (x) tapply (x, genesymbol, function (x) mean (x, na.rm = T))) Как справиться с проблемой, когда результатом является массив, но на самом деле, Я хочу, чтобы это был фрейм данных в один столбец? Спасибо
Shicheng Guo
@ShichengGuo: Вам следует задать новый вопрос.
Джошуа Ульрих