R语言数据导入时,一般会采取character的格式,导入后再进行格式转换,有时多列需要进行同一操作,比如把字符型转换成日期型,可以本办法:
1、先确定要对哪些列进行操作
> str_detect(names(chyi_erp),"日期") %>% which()
[1] 1 2 18 25
2、用data.table包
chyi_erp[,colnames(chyi_erp[,c(1,2,18,25)]):=lapply(.SD[,c(1,2,18,25)],ymd)]`
3、CSDN说字太少,不能发布,充数
本办法的关键是利用colnames函数。
colnames:检索或设置类似矩阵的对象的列名。
用法
colnames(x,do.NULL=TRUE,prefix=“col”)
colnames(x)<- v
细节
提取器函数尝试对任何类似矩阵的对象x执行一些合理的操作。如果对象具有DIMNAME,则第一个组件用作行名称,第二个组件(如果有)用于列名。对于数据帧,行名和列名最终调用行。名称和名称,但后者是首选。
如果是这样的话。如果NULL为FALSE,则在任何情况下都会返回一个字符向量(长度为NROW(x)或NCOL(x)),如果没有dimnames或dimnames的相应组件为NULL,则在前缀前加上简单数字。
数组/矩阵的替换方法将值的向量和因子值强制为character,但不为as.character分派方法。
对于数据帧,行名的值应为非重复和非缺失名称的字符向量(这是强制的),而对于colnames,其值应为(最好)唯一语法有效名称的字符矢量。在这两种情况下,值都将由as强制。字符,设置colnames将行名称转换为字符。
举例
m0 <- matrix(NA, 4, 0)
rownames(m0)
m2 <- cbind(1, 1:4)
colnames(m2, do.NULL = FALSE)
colnames(m2) <- c("x","Y")
rownames(m2) <- rownames(m2, do.NULL = FALSE, prefix = "Obs.")
m2
4 、困惑
我试着用变量代替.SD[ ]
中的数字,或用列名代替,总是提示失败,不知什么原因。
请高手指点。