Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/70.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何从R中的矩阵中删除列名?_R_Matrix - Fatal编程技术网

如何从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