更改 R 中的列标题,使用交替的空格和名称(用于 Genalex 格式)

use*_*679 2 replace r names strsplit dataframe

我有一个名为 的数据框genalex,因为我试图将我的基因数据放入常见的“genalex”格式。我刚刚使用了strsplitR 中的函数来拆分列,现在我有了:

> genalex[1:5,1:10]
  Ind V1 V2 V3 V4 V5 V6 V7 V8 V9
1 100  A  A  C  C  N  N  C  C  N
2 101  A  A  C  C  N  N  N  N  N
3  10  A  A  C  C  N  N  C  C  N
4  11  A  A  N  N  N  N  C  C  N
5  12  N  N  N  N  N  N  C  C  G
Run Code Online (Sandbox Code Playgroud)

这个数据框实际上有 330 行和 32,068 列。我想用新名称替换所有其他列(V1、V3、V5、V7、V9 等)的名称。我还想删除所有其他列名(V2、V4、V6、V8 等)

对于新的列名,我想在拆分列之前使用旧数据框中的列名。我将调用旧数据框table。此数据框有 16,034 列,因为它不包括空格:

 table[1:5,1:5]
    X X446043 X539052 X614054 X683054
1 100       A       C       N       C
2 101       A       C       N       N
3  10       A       C       N       C
4  11       A       N       N       C
5  12       N       N       N       C
Run Code Online (Sandbox Code Playgroud)

因此,使用来自 的旧列名table,然后在每列之间添加一个空格,我最终希望我的数据框看起来像这样,对于所有 32,068 列:

   > genalex[1:5,1:8]
      Ind    X446043         X539052         X614054         X683054
    1 100    A       A       C       C       N       N       C  
    2 101    A       A       C       C       N       N       N  
    3  10    A       A       C       C       N       N       C  
    4  11    A       A       N       N       N       N       C  
    5  12    N       N       N       N       N       N       C  
Run Code Online (Sandbox Code Playgroud)

感谢您的任何帮助。

mat*_*lin 5

您可以使用该seq函数来获取奇数和偶数位置:

names(genalex)[seq(2,ncol(genalex),2)] <- names(table)
names(genalex)[seq(1,ncol(genalex),2)] <- ""
names(genalex)[1] <- "Ind"
Run Code Online (Sandbox Code Playgroud)

第一行使用表中的列名重命名所有偶数列索引 (2,4,6,...),第二行将所有奇数列索引设置为空白。然后将第一列重命名为“Ind”。