考虑到简单的代码,

df <- data.frame(x = 1:2,
                 y = 3:4,
                 z = 5:6)

如何使用colnames()重命名包含一行的列xz

我知道colnames(df)[1:2] <- c("p", "q")会修改前两个标题,但如何重命名Not-Together列?

我知道不同的命令可以完成这项工作,只是想知道是否有colnames()的解决方案.

推荐答案

您可以使用c(1,3)来代替 Select 第一列和第二列的1:2,也可以使用names作为data.frame,而不是colnames,但colnames也可以.

names(df)[c(1,3)] <- c("p", "q")

如果位置未知,但名称未知,则可以使用match来获取所需的列.

names(df)[match(c("x", "z"), names(df))] <- c("p", "q")

或者在未找到匹配的情况下使用更健壮的版本.

i <- c(x = "p", z = "q")[names(df)]
j <- !is.na(i)
names(df)[j] <- i[j]

或不使用中间步骤的变体.

names(df) <- c(x = "p", z = "q", setNames(names(df), names(df)))[names(df)]

names(df) <- (\(.) c(x = "p", z = "q", setNames(., .))[.])(names(df)) #Variant

或使用transform.

names(df) <- transform(as.list(setNames(names(df), names(df))), x="p", z="q")

还可以看看Rename multiple columns by namesCanonical tidyverse method to update some values of a vector from a look-up table.


注:在colnames<-的源代码中,您可以找到以下几行:

    if (is.data.frame(x)) {
        names(x) <- value
    }

所以当我有data.frame分的时候,我更喜欢用names而不是colnames.

R相关问答推荐

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

如何在球体上绘制轮廓线?

过滤Expand.Grid的结果

将Multilinetring合并到一个线串中,使用sf生成规则间隔的点

列出用m n个值替换来绘制n个数字的所有方法(i.o.w.:R中大小为n的集合的所有划分为m个不同子集)

行式dppr中的变量列名

查找图下的面积

多重RHS固定估计

在发布到PowerBI Service时,是否可以使用R脚本作为PowerBI的数据源?

在不安装软件包的情况下测试更新

如何自定义3D散点图的图例顺序?

我正在努力用R计算数据集中的中值逐步距离

为了网络分析目的,将数据框转换为长格式列联表

仅在R中的数据集开始和结束时删除所有 Select 列的具有NA的行

在gggraph中显示来自不同数据帧的单个值

从数据创建数字的命名列表.R中的框

如何计算增加10米(0.01公里)的行?

通过R:文件名未正确写入[已解决]将.nc文件转换和导出为.tif文件

Ggplot2如何找到存储在对象中的残差和拟合值?

R-如何在ggplot2中显示具有不同x轴值(日期)的多行?