6
使用data.table,這將是在選定的列上「掃出」統計信息的最快方法嗎?data.tables和掃描函數
與(相當大的版本)DT
p <- 3
DT <- data.table(id=c("A","B","C"),x1=c(10,20,30),x2=c(20,30,10))
DT.totals <- DT[, list(id,total = x1+x2) ]
開始,我想通過索引目標列(2:P)獲得以下data.table結果以跳過鍵:
id x1 x2
[1,] A 0.33 0.67
[2,] B 0.40 0.60
[3,] C 0.75 0.25
感謝您的回答。我已升級到data.table 1.8.0,併成功運行上面的測試代碼。當分子和分母都是來自data.tables的整數列時,我確實會得到一個詳細的警告(不適合在這裏)強制要加倍。我將編輯這個問題。 –
今天我在編輯時遇到困難:沒有換行。無論如何,這裏是代碼:for(j in 2:p)set(dt,allrows,j,dt [[j]]/denom [[2]]) }對於dt和denom,列2到p是整數。我得到的警告是 –
「Warning message: In set(dt,allrows,j,dt [[j]]/denom [[2]]): 強制'double'RHS爲'integer'以匹配列的類型;可能會截斷精度,或者先將目標列更改爲'double'(通過創建一個新的'double'向量長度16863(整個表的nrows)並分配該列;即'replace'列),或者將RHS強制爲'integer '(例如1L,NA_ [real | integer] _,as。*等),以使您的意圖更加清晰和速度更快,或者,請在創建表格時正確設置列類型並堅持。 –