他们是在 R 中重命名我的工作区中所有数据框的列的方法吗
Is their a way to rename the columns of all the dataframes in my workspace in R
我一直在尝试找到一种方法来重命名 R 工作区中每个数据框的所有列。它们只需要具有相同的列名即可。下面的代码是两个数据框(汽车和卡车)的示例,它们的列名称为“1:10”。但是,我有这么多数据框,想自动完成。
names(cars) <- c(1:10)
names(trucks) <- c(1:10)
提前致谢!
这是一种方法。下面我只是以 mtcars 为例,并在我的全局环境中有一个向量来显示你可以忽略其他对象。首先,我创建了一个列表,其中包含全局环境中 dfs 的名称。然后我使用 lapply 将名称设置为 1 到数据中列的长度。我将列表命名为原始 data.frames 的名称,并使用 list2env 将列表导出到全局环境。
根据@gregor 建议编辑
mt1 <- mtcars
mt2 <- mtcars
v1 <- 1
dfslist <- Filter(mget(ls()), f = is.data.frame)
l1 <- lapply(1:length(dfslist),function(x){
setNames(dfslist[[x]],1:ncol(dfslist[[x]]))
})
names(l1) <- names(dfslist)
list2env(l1, .GlobalEnv)
我一直在尝试找到一种方法来重命名 R 工作区中每个数据框的所有列。它们只需要具有相同的列名即可。下面的代码是两个数据框(汽车和卡车)的示例,它们的列名称为“1:10”。但是,我有这么多数据框,想自动完成。
names(cars) <- c(1:10)
names(trucks) <- c(1:10)
提前致谢!
这是一种方法。下面我只是以 mtcars 为例,并在我的全局环境中有一个向量来显示你可以忽略其他对象。首先,我创建了一个列表,其中包含全局环境中 dfs 的名称。然后我使用 lapply 将名称设置为 1 到数据中列的长度。我将列表命名为原始 data.frames 的名称,并使用 list2env 将列表导出到全局环境。
根据@gregor 建议编辑
mt1 <- mtcars
mt2 <- mtcars
v1 <- 1
dfslist <- Filter(mget(ls()), f = is.data.frame)
l1 <- lapply(1:length(dfslist),function(x){
setNames(dfslist[[x]],1:ncol(dfslist[[x]]))
})
names(l1) <- names(dfslist)
list2env(l1, .GlobalEnv)