簡體   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