gpt4 book ai didi

按名称重命名多个列

转载 作者:行者123 更新时间:2023-12-03 05:34:31 25 4
gpt4 key购买 nike

应该有人问过这个问题,但我找不到答案。假设我有:

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

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

例如假设我想将 "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 等)

最佳答案

使用 dplyr 你会这样做:

library(dplyr)

df = data.frame(q = 1, w = 2, e = 3)

df %>% rename(A = q, B = e)

# A w B
#1 1 2 3

或者,如果您想使用向量,按照 @Jelena-bioinf 的建议:

library(dplyr)

df = data.frame(q = 1, w = 2, e = 3)

oldnames = c("q","e")
newnames = c("A","B")

df %>% rename_at(vars(oldnames), ~ newnames)

# A w B
#1 1 2 3

L. D. Nicolas May建议给定的 rename_at 更改将被 rename_with 取代:

df %>% 
rename_with(~ newnames[which(oldnames == .x)], .cols = oldnames)

# A w B
#1 1 2 3

关于按名称重命名多个列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20987295/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com