有人应该已经问过了,但我找不到答案.假设我有:

x = data.frame(q=1,w=2,e=3, ...and many many columns...)  

用什么最优雅的方式将我不一定知道其位置的任意列子集重命名为其他任意名称?

e、 g.假设我想将"q""e"重命名为"A""B",那么最优雅的代码是什么?

显然,我可以做一个循环:

oldnames = c("q","e")
newnames = c("A","B")
for(i in 1:2) names(x)[names(x) == oldnames[i]] = newnames[i]

但我想知道是否有更好的方法?也许用一些软件包?(plyr::rename等)

推荐答案

data.table包中的setnames将在data.framedata.table上工作

library(data.table)
d <- data.frame(a=1:2,b=2:3,d=4:5)
setnames(d, old = c('a','d'), new = c('anew','dnew'))
d


 #   anew b dnew
 # 1    1 2    4
 # 2    2 3    5

请注意,更改是通过引用进行的,因此没有复制(即使对于data.frames!)

R相关问答推荐

使用%in%时如何应用多个条件?

按列A中的值进行子集化,并获得列C中对应于R中列B的最大值行的值?使用循环自动化此操作

用R从API中提取数据

如何使用R以NASAGIBS.ViirsEarthAtNight2012风格绘制自定义 map

从R中的地址提取街道名称

将收件箱变量传递给ggplot 2函数

计算R中的威布尔分布的EDF

向gggplot 2中的数据和轴标签添加大写和星号

selectInput不返回ALL,并将因子转换为shiny 的数字

gt()从gt为相同内容的单元格 colored颜色 不同?

未识别时区

将文件保存到新文件夹时,切换r设置以不必创建目录

将饼图插入条形图

如何在分组条形图中移动相关列?

将二进制数据库转换为频率表

有没有可能用shiny 的书签恢复手风琴面板?

如何移除GGPlot中超出与面相交的任何格网像元

如何在R中使用hmm TMB提前一步预测观察到的状态?

远离理论值的伽马密度曲线下面积的近似

R基于变量组合创建新的指标列