事情是酱紫的,楼主用 Rstudio server 连接数据库,需要一次性导入20个表,刚导入时都是 data.frame,然后需要批量转换为 data.table,并且将列名称改成小写,方便后续做其他数据处理。不过遇到了一个问题,如下所示,就是如果把 setDT 这一步写到前面,结果中就没有成功改成小写,而如果把 setDT 这一步写到后面,就成功了。
转换失败的情况
library(data.table)
data1 <- data.frame(TYPE = c(1:3), VALUE = c(2:4))
data2 <- data.frame(TYPE = c(1:3), VALUE = c(2:4))
data3 <- data.frame(TYPE = c(1:3), VALUE = c(2:4))
tables <- mget(paste0("data", c(1:3)))
tables <- lapply(tables, function(dt) {
setDT(dt)
setnames(dt, new = tolower(colnames(dt)))
return(dt)
})
str(data1)
转换成功的情况
library(data.table)
data1 <- data.frame(TYPE = c(1:3), VALUE = c(2:4))
data2 <- data.frame(TYPE = c(1:3), VALUE = c(2:4))
data3 <- data.frame(TYPE = c(1:3), VALUE = c(2:4))
tables <- mget(paste0("data", c(1:3)))
tables <- lapply(tables, function(dt) {
setnames(dt, new = tolower(colnames(dt)))
setDT(dt)
return(dt)
})
str(data1)