R-在数据集中循环并更改列名

R-在数据集中循环并更改列名,r,R,我正在尝试循环遍历一组数据集,并更改R中的列。 我有很多数据集,比如a,b,c等等,它们都有三列,比如X,Y,Z。 我想将它们的名称更改为数据集a的a_X、a_Y、a_Z,以及数据集b的b_X、b_Y、b_Z,依此类推 这是我的密码: name.list = ("a","b","c") for(i in name.list){ names(i) = c(paste(i,"_X",sep = ""),paste(i,"_Y",sep = ""),paste(i,"_Y",sep = "")

我正在尝试循环遍历一组数据集,并更改R中的列。 我有很多数据集,比如a,b,c等等,它们都有三列,比如X,Y,Z。 我想将它们的名称更改为数据集a的a_X、a_Y、a_Z,以及数据集b的b_X、b_Y、b_Z,依此类推

这是我的密码:

name.list = ("a","b","c")
for(i in name.list){
    names(i) = c(paste(i,"_X",sep = ""),paste(i,"_Y",sep = ""),paste(i,"_Y",sep = ""));
}
但是,上面的代码不起作用,因为我是文本格式的。 我考虑过赋值函数,但似乎不太合适。 如果有任何想法,我将不胜感激。

类似这样的想法:

list2env(lapply(mget(name.list),function(dat){
  colnames(dat) <- paste(nn,colnames(dat),sep='_')
  dat
}),.GlobalEnv)
list2env(lapply(mget(name.list))函数(dat){
colnames(dat)以下是一些免费数据:

a <- data.frame(X = 1, Y = 2, Z = 3) 
b <- data.frame(X = 4, Y = 5, Z = 6)
c <- data.frame(X = 7, Y = 8, Z = 9)
您还可以通过将
a
b
c
放入它们自己的环境(甚至列表)来避免
get
mget
。如果您这样做,您也不需要
name.list
向量,因为它与
ls(e)

e
a <- data.frame(X = 1, Y = 2, Z = 3) 
b <- data.frame(X = 4, Y = 5, Z = 6)
c <- data.frame(X = 7, Y = 8, Z = 9)
name.list <- c("a", "b", "c")
foo <- function(x, i) setNames(x, paste(name.list[i], names(x), sep = "_"))
list2env(Map(foo, mget(name.list), seq_along(name.list)), .GlobalEnv)
a
#   a_X a_Y a_Z
# 1   1   2   3
b
#   b_X b_Y b_Z
# 1   4   5   6
c
#   c_X c_Y c_Z
# 1   7   8   9
e <- new.env()
e$a <- a; e$b <- b; e$c <- c
bar <- function(x, y) setNames(x, paste(y, names(x), sep = "_"))
list2env(Map(bar, as.list(e), ls(e)), .GlobalEnv)