Rename multiple dataframe columns, referenced by current names

后端 未结 5 1930
-上瘾入骨i
-上瘾入骨i 2020-12-24 05:40

I want to rename some random columns of a large data frame and I want to use the current column names, not the indexes. Column indexes might change if I add

5条回答
  •  醉酒成梦
    2020-12-24 06:17

    The trouble with changing column names of a data.frame is that, almost unbelievably, the entire data.frame is copied. Even when it's in .GlobalEnv and no other variable points to it.

    The data.table package has a setnames() function which changes column names by reference without copying the whole dataset. data.table is different in that it doesn't copy-on-write, which can be very important for large datasets. (You did say your data set was large.). Simply provide the old and the new names:

    require(data.table)
    setnames(DT,"MyName.1", "MyNewName")
    # or more explicit:
    setnames(DT, old = "MyName.1", new = "MyNewName")
    ?setnames
    

提交回复
热议问题