【问题标题】:Convert column to rownames in a dataframe without prepending X将数据框中的列转换为行名而不添加 X
【发布时间】:2019-04-10 14:47:55
【问题描述】:

我想将现有数据框的一列中的数值转换为行名。是否可以在行名称前不加 X 的情况下执行此操作?

示例数据框:

df1 = data.frame(names=c(111,20,32,45),
                 var=c("Gene1","Gene2","Gene3","Gene4"))

收件人:

df2 = df1

rownames(df2) = make.names(df2$names, unique=TRUE)

谢谢

【问题讨论】:

    标签: r dataframe tidyverse rowname


    【解决方案1】:

    就这样吧:

    rownames(df2) = df2$names
    

    但是,如果您有重复的名称,并且您想先删除重复的名称,则需要执行以下操作:

    df2 = df2[!duplicated(df2$names),]
    rownames(df2) = df2$names
    

    希望对你有帮助。

    【讨论】:

      【解决方案2】:

      您可以使用tibble 中的column_to_rownames,它还会删除转换为行名的列,即

      library(tibble)
      
      column_to_rownames(df1, var = 'names')
      #      var
      #111 Gene1
      #20  Gene2
      #32  Gene3
      #45  Gene4
      

      【讨论】:

      • 谢谢。出现错误:Error in .rowNamesDF(x, value = value) : duplicate 'row.names' are not allowed
      • 我认为names 列中有一个NA。 NA 已移除,问题已解决!
      猜你喜欢
      • 2017-10-17
      • 1970-01-01
      • 2013-08-26
      • 1970-01-01
      相关资源
      最近更新 更多