【问题标题】:Naming columns for data.table in RR中data.table的命名列
【发布时间】:2014-08-05 02:17:52
【问题描述】:

我有一个表格的 data.table

   nrow    V1      V2        V3      V4        V5  V6 V7                  V8
 1:    1 chr20     C4b   6382078     C4b   6381944 reg  - Thymus_M_GSM1328751
 2:    2  chr8    Rpl4  68832532    Rpl4  68832743 reg  + Thymus_M_GSM1328751

我想将列命名为(“Chromosome”、“Start_Gene”、“startPosition”、“End_gene”、“endPosition”、“RNAtype”、“strand”、“replicate”)。我试过了:

ratData <- ratData[, by= list("Chromosome", "Start_Gene","startPosition", "End_gene", "endPosition", "RNAtype", "strand", "replicate")]

但它不起作用。我也试过 key 而不是“by”。

我该怎么做?

【问题讨论】:

    标签: r data.table


    【解决方案1】:

    您可以使用setnames 函数来更改列名。

    setnames(ratData, c("nrow", "Chromosome", "Start_Gene","startPosition", "End_gene", 
                        "endPosition", "RNAtype", "strand", "replicate"))
    

    这里有几个变体:

    setnames(ratData, 
             paste0("V", 1:8), # i.e. c("V1", "V2", ..., "V8")
             c("Chromosome", "Start_Gene","startPosition", "End_gene", 
               "endPosition", "RNAtype", "strand", "replicate"))
    
    setnames(ratData, 
             2:9,
             c("Chromosome", "Start_Gene","startPosition", "End_gene", 
                "endPosition", "RNAtype", "strand", "replicate"))
    

    【讨论】:

    • 我认为应该是setNames,大写N
    • @ElPresidente 不,setnames 是一个 data.table 函数,它不会在内存中制作任何副本。
    • 如果你使用paste0那么你就不需要collapse=""
    • @DeanMacGregor 哎呀。那应该是sep="" 而不是collapse="",在这种情况下你是对的,我可以使用paste0 代替。我会更新的。
    【解决方案2】:

    'names' 功能也可以:

    names(ratData)
    [1] "nrow" "V1"   "V2"   "V3"   "V4"   "V5"   "V6"   "V7"   "V8"  
    
    names(ratData) = c("nrow", "Chromosome", "Start_Gene","startPosition", "End_gene", "endPosition", "RNAtype", "strand", "replicate")
    
    ratData
       nrow Chromosome Start_Gene startPosition End_gene endPosition RNAtype strand           replicate
    1:    1      chr20        C4b       6382078      C4b     6381944     reg      0 Thymus_M_GSM1328751
    2:    2       chr8       Rpl4      68832532     Rpl4    68832743     reg      0 Thymus_M_GSM1328751
    

    【讨论】:

    • 如果我没记错的话,这会产生多个数据副本,因此虽然它有效,但它可能不是最好的方法。来自“data.table”的setnames 也适用于data.frames。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-06
    • 2018-04-24
    • 1970-01-01
    • 1970-01-01
    • 2020-07-08
    • 1970-01-01
    相关资源
    最近更新 更多