我有几个数据对象嵌套在一个巨大的对象中,我需要使用rbind
进行堆叠。但是,在堆叠这些之前,我需要将列名称转换为小写,一旦数据对象以不同的大小写样式存储。我怎么能做到这一点?
df <- list(structure(list(a = 1:3, x = c(-1.99, -1.11, -0.34), y = c("C", "B", "A")), .Names = c("a", "x",
"y"), class = c("tbl_df", "tbl", "data.frame"), row.names = c(NA,
-3L)), structure(list(a = 1:3, x = c(-0.44, -1.07,
-0.23)), .Names = c("A", "x"), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -3L)), structure(list(
a = 1:3, x = c(-0.62, -0.60, -0.06
), y = c(3L, 2L, 1L)), .Names = c("a", "X", "y"), class = c("tbl_df",
"tbl", "data.frame"), row.names = c(NA, -3L)))
lapply(df, names)
data.table::rbindlist(df, fill=TRUE, idcol = TRUE)
答案 0 :(得分:0)
设计一个函数并使用lapply
将该函数应用于所有数据框。这会将所有列名更改为小写。
colname_fun <- function(dt){
dt <- setNames(dt, tolower(names(dt)))
return(dt)
}
lapply(df, colname_fun)
答案 1 :(得分:0)
以下是使用lapply
的解决方案。但是,它会创建原始列表的副本。
df_lower <- lapply(df, function(x) setNames(x, tolower(names(x))))