我是 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-loop
。 set()
是 :=
的低开销版本,旨在处理此类重复情况。
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/