如何从R中的矩阵中删除列名?
假设我有一个矩阵如何从R中的矩阵中删除列名?,r,matrix,R,Matrix,假设我有一个矩阵M,列名为'a','b','c'。我想删除这些名字,这样M M = matrix(1:9,3,3) colnames(M)=c('a','b','c') 而不是 M [,1] [,2] [,3] [1,] 1 4 7 [2,] 2 5 8 [3,] 3 6 9 我该怎么做呢?你可以试试 a b c [1,] 1 4 7 [2,] 2 5 8 [3,]
M
,列名为'a','b','c'。我想删除这些名字,这样M
M = matrix(1:9,3,3)
colnames(M)=c('a','b','c')
而不是
M [,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
我该怎么做呢?你可以试试
a b c
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
colnames(M)M
#a、b、c
#[1,] 1 4 7
#[2,] 2 5 8
#[3,] 3 6 9
>colnames(M)M
# [,1] [,2] [,3]
#[1,] 1 4 7
#[2,] 2 5 8
#[3,] 3 6 9
但是,如果您的数据存储在data.frame而不是矩阵中,这将不起作用。如?data.frame
中所述:
列名应为非空,尝试使用空名称将产生不受支持的结果
如果您的数据存储为data.frame(这可以通过
class(my_data)
进行检查),您可以尝试使用M将其转换为矩阵,如果要删除行名,请使用row.names()
函数
> M
# a b c
#[1,] 1 4 7
#[2,] 2 5 8
#[3,] 3 6 9
> colnames(M) <- NULL
> M
# [,1] [,2] [,3]
#[1,] 1 4 7
#[2,] 2 5 8
#[3,] 3 6 9
>M
a、b、c
1[1,] 1 4 7
2[2,] 2 5 8
3[3,] 3 6 9
>row.names(M)我知道有一段时间没有人问过这个问题了,但考虑到这是一个流量很大的问题,我认为这可能是有用的
如果要对M
而不是其列名执行此操作,可以尝试
>M
a b c
1[1,] 1 4 7
2[2,] 2 5 8
3[3,] 3 6 9
>row.names(M)<- NULL ; colnames(M)<- NULL
>M
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
M
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
如果您希望将输出管道化或嵌套到后续函数中,这将更加有效,因为colnames
不返回M
我没有得到所需的输出,我得到的是NA NA NA NA,而不是[,1][,2][,3]代码对您不起作用?这对我来说很好…我试图从一个有大量指定名称的矩阵中得到一个无名矩阵。原因很复杂。这应该是一件相当容易的事情,我想。。。
>M
a b c
1[1,] 1 4 7
2[2,] 2 5 8
3[3,] 3 6 9
>row.names(M)<- NULL ; colnames(M)<- NULL
>M
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9
M <- unname(M)
>M
[,1] [,2] [,3]
[1,] 1 4 7
[2,] 2 5 8
[3,] 3 6 9