繁体   English   中英

使用循环重命名列名

[英]Using a loop to rename column names

我正在使用rename中的dplyr库中的重命名来重命名列名。 我尝试使用循环来实现这一点,它运行没有错误。 但是,不会更新列名。 循环是:

for (i in 1:length(columns)) {
  newcol <- columns[i]
  oldcol <- names(census)[i]
  rename(census, newcol = oldcol) 
}

'columns' 变量是一个包含新列名(与旧列名长度相同)的向量,而 'census' 是包含旧列名数据的小标题。 当只为每个循环迭代打印“newcol”和“oldcol”时,名称是正确的——它们似乎并没有使用“rename”行重命名。

Camille 的评论解释了为什么您的代码不起作用。

要修复代码,您可以删除循环并直接分配列名:

colnames(census) <- columns

使用rename时,需要付出更多努力,因为rename需要未计算的列名,您需要告诉它计算变量:

for (i in seq_along(columns)) {
  newcol <- columns[i]
  oldcol <- colnames(census)[i]
  census <- rename(census, !! newcol := !! oldcol) 
}

或者,再次删除不必要的循环:

census <- rename(census, !!! setNames(colnames(census), columns))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM