2017-01-25 7 views
1

私はRには新しく、colnamesの機能についてはRに質問したかったです。関数を使用すると、行列オブジェクトの単一の列に使用される場合、NULLを提供することがわかりましたが、行列オブジェクトの複数の列に対して完全に正常に動作します。説明するために、 colnamesでの明示R

colnames(test[,c(1:2)]) 
[1] "A" "B" 

は、私は別の方法が colnames(test)[c(1:2)]を使用することであることを理解し、次は正常に動作し、一方、私は行列 test

>test<-matrix(0,ncol=4,nrow=5) 
>colnames(test)<-c("A","B","C","D") 
>colnames(test[,1]) or colnames(test[,c(1)]) gives output as NULL 
NULL 

を持っていると言います。私がNULLを手に入れている場合、ここで何かが逃していますか?

+0

'colnames(test [、1、drop = FALSE])'が動作します。 '?" ["'。 – lmo

+0

'test [、1]' Vs 'test [、c(1:2)]'を試してみると、助けてくれた – Sotos

+1

@Sotosに感謝します。 – vivek

答えて

1

?colnamesの説明を参照してください。あなたはそれはあなたが1次元でベクトルをcolnames与えているcolnames(test[,1])を呼び出しているときa matrix-like R object, with at least two dimensions for colnames.

ある引数xを取ることがわかります。 class(test[,1])class(test[,c(1:2)])を比較してください。ベクトルには列または行がないため、列または行の名前はありません。ベクトル内の名前付き要素を持つことはできますが、それは行列の列名とはまったく同じではありません。

単一の(または複数の)列名を抽出する最適な方法は、列名

colnames(test) # gives you all column names 
colnames(test)[1] # gives you the column name 1 
colnames(test)[c(1,2)] # gives you column names 1 and 2 

これはこの問題を明確にしていますか?

+0

清潔にしてくれてありがとう...本当に助けになりました。 – vivek

関連する問題