私は現在、パッケージ内の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
しかし、これを関数構文に変換したいと思います。