我希望重命名数据中的列.来自其他列表的框架.

mylist <- list(
  var1 = "toto",
  var2 = "titi"
)

mytable <- data.frame(
  var1 = letters[1:3],
  var2 = letters[4:6],
  var6 = letters[7:9]
)

我试过了,但没有成功:

names(mytable) <- sapply(names(mytable), function(x) mylist$x)

预期结果:

names(mytable) <- c("toto","titi","var6")

推荐答案

我们可以在list和数据的名称上使用match.框架以获取索引,并使用该索引对列名进行子集,并指定"mylist"的值

i1 <- match(names(mylist), names(mytable))
names(mytable)[1:2] <- unlist(mylist)

-输出

> mytable
  toto titi var6
1    a    d    g
2    b    e    h
3    c    f    i

或使用rename_with

library(dplyr)
mytable %>% 
  rename_with(~ unlist(mylist), all_of(names(mylist)))
  toto titi var6
1    a    d    g
2    b    e    h
3    c    f    i

此外,如果列表是用反转的键/值对构建的,那么我们可以使用!!!rename

library(hash)
mytable %>%
  rename(!!!as.list(invert(hash(mylist))))
  toto titi var6
1    a    d    g
2    b    e    h
3    c    f    i

R相关问答推荐

按崩溃类别分类的指数

从R中的另一个包扩展S3类的正确方法是什么

从API中抓取R数据SON

如何删除多个.CSV文件的行

如何 bootstrap glm回归、估计95%置信区间并绘制它?

通过使用str_detect对具有相似字符串的组进行分组

如何使用按钮切换轨迹?

错误:非常长的R行中出现意外符号

如何根据R中其他列的值有条件地从列中提取数据?

当我们有多个特殊字符时,使用gsub删除名称和代码'

使用外部文件分配变量名及其值

在使用bslb和bootstrap5时,有没有办法更改特定dt行的 colored颜色 ?

R:用GGPLATE,如何在两个独立的变量中制作不同形状的散点图?

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

在R中,如何从一系列具有索引名的变量快速创建数据帧?

有没有办法将基于每个值中出现的两个关键字或短语的字符串向量重新编码为具有这两个值的新向量?

长/纬点继续在堪萨斯-SF结束,整齐的人口普查

排序R矩阵的行和列

GOGPLATE geom_boxploy色彩疯狂

将字符变量出现次数不相等的字符框整形为pivot_wider,而不删除重复名称或嵌套字符变量