[英]Renaming columns in a loop R
我試圖在循環中搜索如何重命名多個數據幀的列,但我找不到一個有凝聚力的答案。 假設我有4個數據幀,每個數據幀有2列。 我想在所有4個數據幀中將每個y1列重命名為“number”,並將每個y2列重命名為“value”。 我知道我可以通過創建列表來實現這一點,但我想直接為該數據幀更改列的名稱,而不是作為數據幀列表值(如df_list [[1]])。 當我使用這段代碼時,我得到了那種結果:
df_list <- list(d1, d2, d3, d4)
for (i in 1:length(df_list)){
colnames(df_list[[i]]) <- c("number", "value")
}
數據框:
d1 <- data.frame(y1 = c(1, 2, 3), y2 = c(4, 5, 6))
d2 <- data.frame(y1 = c(3, 2, 1), y2 = c(6, 5, 4))
d3 <- data.frame(y1 = c(1, 2, 3), y2 = c(4, 5, 6))
d4 <- data.frame(y1 = c(3, 2, 1), y2 = c(6, 5, 4))
最簡單的是setNames
lapply(df_list, setNames, c("number", "value"))
正如@Parfait所提到的,最好在list
包含對象而不是在全局環境中更改對象,但如果list
名稱也是對象名稱,則可以完成
list2env(lapply(mget(paste0("d", 1:4)), setNames,
c("number", "value")), envir = .GlobalEnv)
names(d1)
#[1] "number" "value"
或者使用for
循環
for(nm in paste0("d", 1:4)) assign(nm, `names<-`(get(nm), c("number", "value")))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.