私は現在、パッケージ内のset関数を使用していくつかのテストを行っており、次のコードがあります。data.tableR
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しかし、これを関数構文に変換したいと思います。