我目前正在使用包中的set
函数进行一些测试,并具有以下代码:data.table
R
dt= data.table(ans=rep(c(14,16),100))
dt[,voy:=0.0]
set(dt,which(dt[,ans]==14),"voy",log(dt[,ans]))
dt
请注意,我想计算ans=14
使用该set
函数的情况的对数,但我没有得到正确的结果。这是我得到的结果:
ans voy
1: 14 2.639057
2: 16 0.000000
3: 14 2.772589
4: 16 0.000000
5: 14 2.639057
---
196: 16 0.000000
197: 14 2.639057
198: 16 0.000000
199: 14 2.772589
200: 16 0.000000
您可能会注意到,对于某些行,变量的值voy
是预期的log(14)=2.639057
,但对于其他情况,变量的值ans=14
是赋值的2.772589=log(16)
。所以,我认为我在滥用该set
功能。我该如何解决这个问题?我知道下一个代码可用于执行此操作:
dt[ans==14,voy:=log(ans)]
但我想把它翻译成set
函数语法。