簡體   English   中英

在循環中更改多個數據框的列名

[英]Change column names for multiple data frames in a loop

我有四個不同河流數據集的四個數據框(河流是 Main、Danube、Isar 和 Inn)。 數據框的維度相同,命名如下:“df_Main”、“df_Danube”、“df_Isar”和“df_Inn”。 為了方便以后繪圖,我需要所有數據框都具有相同的列名。 我認為可以通過以下方式輕松實現:

rivers <- c("Main", "Danube", "Isar", "Inn")
for (i in 1:length(rivers)) {
  colnames(get(paste0("df_", rivers[i]))) <- c("bla", "bla", "bla", "bla")
}

但這不起作用。 有人有想法嗎?

如果你想 go 這樣你可能需要 function assign 舉個例子:

rivers <- c("df_Main", "df_Danube", "df_Isar", "df_Inn")

for (i in rivers) {
  x=get(i)
  colnames(x) <- c("bla", "bla", "bla", "bla")
  assign(i,x)
}

如果您需要為超過 4 個 data.frames 執行此操作,您可能應該檢查應用 function。

不過,如果您打算通過 ggplot2 將它放在 plot 中,那么將它放在單個 df 中可能會更有用。

一個偽代碼

library(purrr) # using purrr for map function
# create a list of 4 data frame
# another alternatives is define the initial list with names
list_4_river_df <- list(df_Main = df_Main, df_Danube = df_Danube,
                        df_Isar = df_Isar, df_Inn = df_Inn)
# map setNames to each dataframe in the list
list_4_river_df <- map(list_4_river_df, setNames, nm = c("bla_1", "bla_2", "bla_3", "bla_4", "bla_5"))

# then list2env should work perfectly
list2env(list_4_river_df,envir = .GlobalEnv)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM