r语言 - 如何重命名列内的功能?



如何在使用变量名作为参数的手动创建的函数中重命名列?

例如我的数据是:

df <- data.frame (model = c("A","A","A","B","B","B"),
category  = c("z3","f4","c5","d3","g6","B6"),
sale = c(1001,1050,-300,-150,-25,960))

现在我想在函数中重命名'model'列,并指定列名作为参数

chng <- function(x,var1){

x %>% 
rename(
var1 = newname)
}
df2 <- chng(df,"model")

但是这不起作用

我们可能需要反转

chng <- function(x,var1){

x %>% 
rename(
newname = all_of(var1))
}

测试

chng(df, "model")
newname category sale
1       A       z3 1001
2       A       f4 1050
3       A       c5 -300
4       B       d3 -150
5       B       g6  -25
6       B       B6  960

另一个选项:

chng <- function(x,var1){

names(x)[match(var1, names(x))] <- 'newname'
return(x)
}
df2 <- chng(df,"model")
df2

输出:

newname category sale
1       A       z3 1001
2       A       f4 1050
3       A       c5 -300
4       B       d3 -150
5       B       g6  -25
6       B       B6  960

对于多列

可以使用以下代码:

chng <- function(x,var1,var2){

names(x)[match(c(var1, var2), names(x))] <- c('newname1', "newname2")
return(x)
}
chng(df, "model", "category")

输出:

newname1 newname2 sale
1        A       z3 1001
2        A       f4 1050
3        A       c5 -300
4        B       d3 -150
5        B       g6  -25
6        B       B6  960

最新更新