要从 data.table 中提取级别,标准方法是将 data.table
作为列表应用还是以某种方式在括号内进行?
例如,使用 npk
内置数据,我知道前 4 列是因子,我想提取级别。
dat <- as.data.table(npk)
这就是我想要的,级别列表
levs <- lapply(dat[,1:4,with=FALSE], levels)
但是,我是否缺少像这样的 data.table
方式? (但这并不正确,因为它会重复级别以匹配最长的级别)。
levs2 <- dat[, lapply(.SD, levels), .SDcols=names(dat)[1:4]]
ps。抱歉,如果这看起来很愚蠢,我只是想选择正确的 data.table 习惯用法。
最佳答案
您的第一个示例对我来说似乎是合理的,并且我认为您不能在 data.table 的括号内执行此操作,因为返回类型应该是列表。
另一个选项是Filter(Negate(is.null),lapply(DT,levels))
,它的另一个好处是不需要事先知道哪些列是因子
关于r - 从 data.table 中提取级别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33662588/