如何将嵌套列表中data.frame的元素名、列名及值统一转为大写?
将嵌套列表的元素名、DataFrame列名及变量值全部转为大写
原始数据
my_list <- list(my_name = data.frame(c("Juan", "CArlos", "RRicardo")), my_data = data.frame(c("Lunes", "Martes", "Miercoles")))
解决方案(基础R实现)
无需额外依赖包,用基础R函数即可完成全部转换:
# 1. 把列表元素名转为大写 names(my_list) <- toupper(names(my_list)) # 2. 遍历每个DataFrame,处理列名和变量值 my_list <- lapply(my_list, function(df) { # 转换列名为大写 names(df) <- toupper(names(df)) # 把所有变量值转为大写(适用于字符型列) df[] <- lapply(df, toupper) return(df) })
解决方案(tidyverse实现)
如果习惯使用tidyverse生态,代码会更简洁直观:
library(tidyverse) my_list <- my_list %>% # 重命名列表元素为大写 set_names(toupper(names(.))) %>% # 遍历每个DataFrame做转换 map(function(df) { df %>% # 转换列名为大写 rename_with(toupper) %>% # 转换所有列的变量值为大写 mutate(across(everything(), toupper)) })
验证结果
执行上述代码后,打印my_list就能得到期望的输出:
print(my_list)
输出示例:
$MY_NAME C..JUAN....CARLOS....RRICARDO.. 1 JUAN 2 CARLOS 3 RICARDO $MY_DATA C..LUNES....MARTES....MIERCOLES.. 1 LUNES 2 MARTES 3 MIERCOLES
内容的提问来源于stack exchange,提问作者Nicolás Sacco
相关产品推荐
相关产品推荐

