如何从R中的矩阵中删除列名?

wol*_*oor 14 r matrix

  M = matrix(1:9,3,3)
colnames(M)=c('a','b','c')
Run Code Online (Sandbox Code Playgroud)

假设我有一个矩阵M,列名为'a','b','c'.我想删除名字,以便M

M    [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
Run Code Online (Sandbox Code Playgroud)

而不是

       a     b    c
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
Run Code Online (Sandbox Code Playgroud)

我该怎么做呢?

RHe*_*tel 14

你可以试试

colnames(M) <- NULL
Run Code Online (Sandbox Code Playgroud)

使用你的例子:

> 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
Run Code Online (Sandbox Code Playgroud)

但是,如果您的数据存储在data.frame而不是矩阵中,则无法使用.如下所述?data.frame:

列名称应为非空,并且尝试使用空名称将具有不受支持的结果

如果您的数据存储为data.frame(可以检查class(my_data)),您可以尝试将其转换为矩阵M <- as.matrix(my_data).希望这可以帮助.


hmh*_*sen 9

我知道自问这个问题已经有一段时间了,但是鉴于这是一个交易量很高的问题,我认为这可能很有用。

如果要执行此操作M而不是其列名,则可以尝试

M <- unname(M)
>M
     [,1] [,2] [,3]
[1,]    1    4    7
[2,]    2    5    8
[3,]    3    6    9
Run Code Online (Sandbox Code Playgroud)

如果您希望将输出通过管道或嵌套到后续函数中,因为colnames不会返回,则效率会更高M