0
我想将数据表中的所有值转换而不丢失其类。使数据表中的所有值降低而不丢失类
使用所述 虹膜数据实施例设置
library(datasets)
library(dplyr)
data(iris)
iris <- iris %>% as.data.table()
iris[2:3, 5] <- "SeToSa"
iris %>% str
iris2 <- copy(iris)
iris <- iris[, lapply(.SD, function(x)(tolower(x)))]
或
iris2 <- iris2[, lapply(.SD, function(x)(ifelse(is.factor(x), tolower(x), x)))]
iris %>% str
然而,这些尝试的非能够维持类中每个列的。另外,如果它们存在,我正在失去属性。
总之,就是有,我们可以使用lapply在数据表不失特性的任何方式(类,属性),每列的?
如果这是你需要做的一个因素'tolower(levels(x))' –
你的问题不是关于data.table。为什么你在你的问题中使用dplyr也是一个谜题(你正在减少可能的答案)。你的问题是关于'tolower',它被记录为返回类字符向量,以及如何将它应用于因子变量的水平。 – Roland
他可能已经添加了'dplyr'包以便能够使用'pipe operator'。尽管一个谨慎。将“tolower”函数应用于因子水平只会改变因子水平。这将为所创建的新关卡返回“NA”。最好的选择是处理字符并将其改变为因素:'factor(tolower(x))' – Onyambu