2
我目前在做一些試驗用的data.table
包set
功能R
並具有以下代碼:我在做什麼錯(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
注意,我想計算的使用set
功能爲ans=14
這些情況下,對數,但我沒有得到正確的結果。這是我得到的結果是:
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
函數的語法此。
爲什麼?你展示了一個可行的,很好的選擇。爲什麼用更復雜的東西代替它? – Andrie
你是對的@安德烈,但我只是想確保我理解''''''函數的工作方式。謝謝! – Nestorghh