是否可以在 R 中创建一个循环来更改数据帧列表中某些变量的名称以及每个数据帧中的排序行?

Is it possible to create a loop in R that changes the name of some variables in a list of dataframes and order rows in each dataframe?

我正在尝试创建一个循环来重命名数据框列表中的一些变量并使用变量对行进行排序。我尝试使用此代码(_var1_var2var3 存在于每个数据帧中):

dfnames <- c("df1", "df2", "df3", "df4", "df5", "df5", "df6")

for (cur.dfname in dfnames) {   
  cur.df <- get(cur.dfname)
  cur.df <- rename(cur.df, var1 = "_var1", var2 = "_var2")
  cur.df <- arrange(cur.df, var3, desc(var1))
}

此代码似乎不起作用,也没有生成错误消息。

对象 cur.df 仅在 (scope of the) 循环内已知。要在循环外更改数据帧,您可以将其分配给父环境,如:

for (cur.dfname in dfnames) {   
  cur.df <- get(cur.dfname)
  cur.df <- rename(cur.df, 'var1' = '_var1')
  cur.df <- arrange(cur.df, 'var1')
  ## manipulate objects beyond the loop scope:
  assign(cur.dfname, cur.df, envir = parent.frame(1))
}

请注意,这种范围破坏被认为是不好的做法。