我很高興地發現data.table有新版本Ĵ(),並得到了一個問題,關於Ĵ()有關新功能的data.table 1.9.2
X [J(2) ,a],其中「a」是關鍵列,在'j',#2693和常見問題解答2.8中看到'a'。另外,x [J(2)]使用'x'的鍵列自動命名'i'中的列。在'x'和'i'的關鍵字欄相同的情況下,我的欄可以使用'i.name'來引用;例如x [J(2),i.a]`
在S.O中有幾個關於J()的問題,以及data.table有關J()的二進制搜索的介紹。但是我對J()的理解還不是很清楚。
我所知道的是,如果我要選擇行,其中「B」在列A和「d」在列B:
DT2 <- data.table(A= letters[1:5], B=letters[3:7], C=1:5)
setkey(DT2,A,B)
DT2[J("b","d")]
,如果我要選擇行,其中A =「一個「或」c「,我這樣的代碼
DT2[A=="a"|A=="c"]
很像data.frame的方式。 (小問題:如何選擇使用更多的data.table方式?)
所以據我瞭解,J()只用於上述情況。從2個不同的列中選擇兩個單一值。
希望我的理解是錯誤的。關於J()的文檔很少。我讀了How is J() function implemented in data.table?。 J(.) is detected and simply replaced with list(.)
似乎每個個案名單()可以代替Ĵ(。)
,並回到剛纔的問題,這個新功能的目的是什麼? x[J(2), a]
真的很感激,如果你能給一些詳細的解釋!
這些應該可能是單獨的問題。 – Thomas
@Thomas感謝您的建議,現在我把它們放在單獨的問題中! – Bigchao
@Arun,當然,我更新了問題,並將'DT [,sum(A,na.rm = FALSE),by = B]'的預期結果。另外,我把問題放在不同的帖子中,並修改了標題。非常感謝! – Bigchao