colnames 并在多个数据帧上进行变异

问题描述

我在清理代码时遇到问题。我知道我可以把这些都打出来,但我们显然不想那样做。
我的全球环境中只有数据框。它们都是“data.frame”。 我想检查所有这些的尺寸并将其放在小标题中。我以某种方式做到了。我还想更改他们的 colnames() tolower() 如果我只输入 data.frame 的名称,这很容易,但是有 2 个以上,我希望它自动完成。然后我也想以同样的方式改变所有的 data.frames。

我的代码的小例子:

library(tidyverse)
x <- data.frame(letters[1:2]) #To create the data
y <- data.frame(letters[3:4])
dfs <- as.list(ls()) #I take whatever is in my environment

我设法在下面获得了一些尺寸:

z <- as_tibble(lapply(seq_along(dfs),function(j) dim(get(dfs[[j]]))),.name_repair = "unique")
colnames(z) <- dfs

现在对于存储在我的列表中的所有 data.frames 的列名,我基本上想要执行以下代码:

colnames(dfs[[1]]) <- tolower(colnames(dfs[[1]])

但是正如我之前发现的那样返回NULL。所以我在那里使用了 get() 使其适用于维度。但是如果我使用 get() 来分配列名,它说它找不到函数“get 由于所有数据帧的所有列名都相同(只是 nrows() 不同),我可以将小写列名保存为值并使用它,但这并不能消除它无法找到 get

names <- tolower(colnames(x))
sapply(seq_along(dfs),function(j) colnames(get(dfs[[j]])) <- names)
*Error in colnames(get(dfs[[j]])) <- names : 
  could not find function "get<-"*

至于变异部分,我尝试了 for 循环:

for(i in seq_along(dfs)){
  get(dfs[[i]]) <- get(dfs[[i]]) %>% mutate(cd = ab)
}

但这是同样的问题。 有人可以帮我解决这个问题吗? (如果有更清晰的尺寸代码,将不胜感激)

我只是想提高我的编码技能。如果我把它全部打出来,我早就完成了,但这违背了目的。
谢谢!
-JK

解决方法

使用 base R

lapply(dfs,function(x) transform(setNames(x,tolower(names(x))),X = c('a','b')))

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...