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


84

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

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

Ответы:


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: Вам следует задать новый вопрос.
Джошуа Ульрих
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.