r - 使用 assign() 在 R 中循环重命名变量

标签 r loops rename assign

我试图在多个数据帧上重命名一个变量,但赋值不起作用。这是我正在尝试的代码

assign(colnames(eval(as.name(DataFrameX)))[[3]], "<- NewName")
# The idea is, go through every dataset, and change the name of column 3 to
# "NewName" in all of them

这不会返回任何错误(我能想到的所有其他版本都会返回某种错误),但它也不会更改变量名称。

我正在使用循环创建多个数据框和每个数据框内的不同变量,现在我需要重命名其中一些变量,以便稍后可以将数据框合并为一个。一切正常,除了重命名。如果我在使用 colnames(DF)[[3]] <- "NewName" 的常规调用中输入自己的数据框名称和变量,但不知何故,当我尝试使用 assign 以便它在循环中完成时,它什么也没做。

最佳答案

下面是您可以对环境中的所有数据帧 进行循环的方法。由于您正在寻找环境中的 data frame,因此您可以避免接触任何其他变量的风险。重点是您应该将新更改分配到循环中的每个数据框

df1 <- data.frame(q=1,w=2,e=3)
df2 <- data.frame(q=1,w=2,e=3)
df3 <- data.frame(q=1,w=2,e=3)

# > df1
  # q w e
# 1 1 2 3
# > df2
  # q w e
# 1 1 2 3
# > df3
  # q w e
# 1 1 2 3

DFs=names(which(sapply(.GlobalEnv, is.data.frame)))
for (i in 1:length(DFs)){
    df=get(paste0(DFs[i]))
    colnames(df)[3]="newName"
    assign(DFs[i], df)
}

# > df1
  # q w newName
# 1 1 2       3
# > df2
  # q w newName
# 1 1 2       3
# > df3
  # q w newName
# 1 1 2       3

关于r - 使用 assign() 在 R 中循环重命名变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37526921/

相关文章:

javascript - 使用 node.js 重命名文件

r - Error in `[<-` (`*tmp*` , , 下标越界 下标越界

r - 下载后在R中解压文件

r - 将 quosure 和 format 拼接成字符串列表

R 在特定值之前添加空行

python - 在函数内部或外部循环?

powershell - 在 Powershell 中批量重命名照片并向重复文件名添加字母

python - 解码 json 并遍历 django 模板中的项目

c - for 循环中的分号和逗号

c# - 从类继承以保证向后兼容性