首页 > 解决方案 > R使用列索引更改数据表因子水平

问题描述

假设下面有一个数据表 DT

DT <- data.table(m=1:3, n=factor(c("a","b","c")))

我想将第二列的级别更改为 c("d","e","f")。我可以使用

levels(DT$n) <- c("d","e","f")

但是,如果我只知道列索引该怎么办;即 2. 我尝试了以下行,但它不起作用!

i=2
levels(DT[, ..i]) <- c("d","e","f")

这是我得到的错误:

Error in `[<-.data.table`(`*tmp*`, , ..i, value = list(n = 1:3)) : object '..i' not found

标签: rdatatable

解决方案


你仍然可以这样做data.frame

levels(DT[[2]]) <- c("d", "e", "f")

但是请注意,通常不建议按列索引更新..


推荐阅读