r - 如何替换多个值中的值?

标签 r data.table

我是 data.table 的新手。我只知道如何逐列替换值。有没有办法通过1个命令来做到这一点?这是我的示例代码:

DT1 = data.table(A=sample(3, 10, TRUE), 
             B=sample(3, 10, TRUE),
             C=sample(3, 10, TRUE))

DT1[,A:=ifelse(A>1,1,0),]
DT1[,B:=ifelse(B>1,1,0),]
DT1[,C:=ifelse(C>1,1,0),]

理想情况下,有一种方法可以将最后 3 个命令合并为 1 个命令。提前致谢。

最佳答案

最有效(也是惯用的)方法是在这里使用 set()for-loopset():=低开销版本,旨在处理此类重复情况。

for (cols in c("A", "B", "C")) {
    set(DT1, i=which(DT1[[cols]] > 1L), j=cols, value=0L)
}

请注意,@ColonelBeauvel 的解决方案返回一个全新的数据集,只是为了替换这些列的某些行,这是 data.table 试图避免的!

关于r - 如何替换多个值中的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28310204/

相关文章:

r - 在将列表转换为数据框或数据表时处理丢失的信息

使用 'by' 和条件替换 data.table 中的行值

r - 当我渲染 R markdown 时隐藏包加载消息

r - 包函数中的 stop() 不会结束 Debug模式

r - data.table 与 plyr 回归输出

r - 使用 data.table 根据条件创建二进制列

r - 在函数中修改后,第一次调用时不显示 data.table

R xgboost on caret 尝试执行分类而不是回归

r - 如何从 R 应用函数访问全局/外部范围变量?

r - 在 R 中匹配和汇总数据框