2013-12-19 2 views
1

Я хотел бы индексировать-выбирать столбец из матрицы, сохраняя значение colname. НапримерМожно ли выбрать столбец, сохраняя его colname?

m<-matrix(1:9,ncol=3) 
colnames(m)<-c('V1','V2','V3') 
selected<-as.matrix(m[,1]) 

Однако

> selected 
    [,1] 
[1,] 1 
[2,] 2 
[3,] 3 

Я хотел бы иметь colname(selected)<-'V1' в результате вместо этого. Почему R ведет себя так и как я могу это исправить? Благодарю.

ответ

4

Снимите as.matrix() в последней строке и использовать drop=FALSE (см ?Extract)

> m<-matrix(1:9,ncol=3) 
> colnames(m)<-c('V1','V2','V3') 
> m[,1,drop=FALSE] 
    V1 
[1,] 1 
[2,] 2 
[3,] 3 

Что вы делаете, выбирает один столбец. R по умолчанию удаляет все измерения (и, следовательно, также имена), которые не нужны. В этом случае вы отбрасываете одно измерение, так как один столбец можно рассматривать как вектор. Аргумент drop=FALSE предотвращает это.

+0

Спасибо, я не знал о аргументе 'drop'. – tomka

Смежные вопросы