从 model.matrix 之后的列名中删除空格

remove whitespace from column names after model.matrix

我写信给你是因为我需要删除矩阵列名中间的空格。我在 R 工作。

在我的代码中,我只有 运行 一个 model.matrix 命令。它为每个因素添加一列,因此,如果因素名称中有一些空格,则会将其移动到列名称中。

我想删除它们。

下面是一个例子

Intercept   Region_Factor 1 A   Region_Factor 2 A    Region_Factor 3 A     VarA 10    
    1               1                  0                    0               1  
    1               0                  1                    0               0.52
 .......    

我想得到列名如下:

Intercept   Region_Factor_1_A    Region_Factor_2_A    Region_Factor_3_A    VarA_10
    1               1                   0                    0               1  
    1               0                   1                    0               0.52
 .......

非常感谢

一个选项是使用 gsub 来匹配列名中的 space 并替换为 _

colnames(df1) <- gsub(" ", '_', colnames(df1))

如果只有一个 space 实例要替换,请使用 sub

colnames(df1) <- sub(" ", '_', colnames(df1))

或者另一种选择是 chartr

colnames(df1) <- chartr( ' ', '_', colnames(df1))

或者另一种选择是 rename_alltidyverse

library(tidyverse)
df1 %>%
   rename_all(~ str_replace(., ' ', '_'))

注意:gsub 首先在这里回答。

可以把列名读成colnames,把空格换成gsub再放回列名,写成:

colnames(matrix)=gsub(" ", "_", colnames(matrix), fixed = TRUE)