r - 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
解决方案
你仍然可以这样做data.frame
:
levels(DT[[2]]) <- c("d", "e", "f")
但是请注意,通常不建议按列索引更新..
推荐阅读
- python - 确定熊猫数据框中每一列的最大值
- c++ - 将数字转换为单词
- django - 如何在 DetailView 中对 ForeignKey 实例进行分页
- c - 在具有外部链接的内联函数中引用静态对象
- django - Djongo重新定义了ArrayModelField的结构
- ada - Array(Array'First) "数组索引检查可能失败"
- python - 子类构造函数抛出 TypeError:__init__() 接受 2 个位置参数,但给出了 5 个
- node.js - 为 Azure 应用服务上的节点配置默认文档
- php - Laravel 搜索;按外部表过滤,然后再次使用本地表过滤结果
- php - basiclatin 和 1supplement 的 php 字符串验证