행렬을 하나의 열로 하위 집합하고, 행렬 데이터 유형을 유지하고, 행 / 열 이름을 유지하는 방법은 무엇입니까?


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

나는 최근에 이것을보고 맹세 할 것이다 그러나 그것은 의문을 제기되고 있던 유사 dataframe 동작되었을 수도 있습니다 : stackoverflow.com/questions/6941985/...
IRTFM

5
첫 번째 차원으로 만 인덱싱하려면 다음과 같이 drop을 사용할 수 있습니다.m[1,,drop=FALSE]
Kevin Bullaughey 2014

통계적 근거에 대한 예를 제공하기 위해 Cooks의 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))) 결과가 배열이지만 실제로는 문제를 처리하는 방법, 1 열 데이터 프레임이되고 싶습니까? 감사합니다
Shicheng 구오

@ShichengGuo : 새로운 질문을해야합니다.
여호수아 울리히
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.