r - 从 data.table 中提取级别

标签 r data.table

要从 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/

相关文章:

r - 使用 fread 加载数据表后无法识别列名

r - 如何检查数据表中每一行的列值是否在另外两个范围内

r - 在列表列中设置操作

r - 错误 : Column indexes must be at most 1 if. .. heatmap.2

r - 在R中使用nls重新创建研究

r - 使用 R 理解插入符号中的网格

r - 如何减少保持其他列顺序的数据框

r - ggplot误差线问题

r - 按每组中的最大值过滤数据框

r - 使用 data.table[,,by=...] 时包括所有排列