【问题标题】:Change column headings in R, with alternating blanks and names (for genalex format)更改 R 中的列标题,交替使用空格和名称(用于 genalex 格式)
【发布时间】:2016-01-02 23:13:11
【问题描述】:

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

> 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

这个数据框实际上有 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

因此,使用 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  

感谢您的帮助。

【问题讨论】:

    标签: r replace dataframe names strsplit


    【解决方案1】:

    可以使用seq函数获取奇偶位置:

    names(genalex)[seq(2,ncol(genalex),2)] <- names(table)
    names(genalex)[seq(1,ncol(genalex),2)] <- ""
    names(genalex)[1] <- "Ind"
    

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

    【讨论】:

    • 谢谢;为了清楚起见,小数用作空格的占位符?这些仍然在 R 中被视为空白?
    • @user3545679:小数?我不明白你的问题。
    • 我没有为“空白”列获取空白,而是将小数点作为标题。当我尝试添加 NA 而不是空白时,使用以下代码: names(genalex)[seq(1,ncol(genalex),2)]
    • 我不知道为什么会这样。尝试将所有列设置为“”:names(genalex) &lt;- rep("", ncol(genalex)),然后是上述代码的第一行和第三行。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-20
    • 2015-09-03
    • 1970-01-01
    相关资源
    最近更新 更多