R中colnames函数的澄清

时间:2017-01-25 13:26:52

标签: r matrix

我是R的新手,我想向专家询问colnames中的R功能。使用该函数我意识到如果用于矩阵对象的单个列,它提供NULL,但是对于矩阵对象的多于1列,它可以完美地工作。为了说明,我说我有矩阵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

而以下工作正常,

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

我理解另一种方法是使用colnames(test)[c(1:2)]。在我得到NULL的情况下,我是否遗漏了一些内容。

1 个答案:

答案 0 :(得分:1)

如果您查看?colnames的说明。您会看到它需要x参数a matrix-like R object, with at least two dimensions for colnames.

当您致电colnames(test[,1])时,您正在给colnames一个1维向量。比较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

这是否为您澄清了这个问题?