R使用列索引更改数据表因子级别

时间:2019-03-06 00:04:25

标签: r datatable

在下面假设一个数据表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

1 个答案:

答案 0 :(得分:1)

您仍然可以使用data.frame的方式:

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

但是请注意,通常不建议通过列索引进行更新。