我有一個腳本生成一個資料框,其中包含以數字 1、2、3 命名的多列 –> n
我想用以下名稱重命名列:“Cluster_1”、“Cluster_2”、“Cluster_3”->“Cluster_n”(遞增)。
由于我的資料框中的列數可以根據腳本的另一部分進行相應更改,因此我希望能夠有一種回圈結構可以遍歷我的資料框并相應地更改列。
我想做類似的事情:
for (i in colnames(df)){
an expression that would change the column name to a concatenation of "Cluster_" i
}
在回圈背景關系之外,我通常使用此運算式來重命名列:
names(df)[names(df) == '1'] <- 'Cluster_1'
但是我很難生成此運算式的改編版本,該版本可以將字串和變數值的串聯正確地集成到我的 for 回圈中。
如何調整重命名資料框列的運算式以集成到我的for回圈中?
還是有比for回圈更好的方法來做到這一點?
uj5u.com熱心網友回復:
使用paste0。
names(df) <- paste0('cluster_', seq_len(length(df)))
如果你真的需要一個for回圈,試試
for (i in seq_along(names(df))) {
names(df)[i] <- paste0('cluster_', i)
}
df
# cluster_1 cluster_2 cluster_3 cluster_4
# 1 1 4 7 10
# 2 2 5 8 11
# 3 3 6 9 12
注意: colnames()/rownames()專為 class 設計"matrix",對于"data.frame"s,您可能需要使用names()/row.names().
資料:
df <- data.frame(matrix(1:12, 3, 4))
uj5u.com熱心網友回復:
一個整潔的解決方案:rename_with()
require(dplyr)
## '~' notation can be used for formulae in this context:
df <- rename_with(df, ~ paste0("Cluster_", .))
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/537538.html
標籤:r数据框循环
