2013-05-21 69 views
3

單細胞/子集列如何可以訪問一個data.table只是一個單細胞的方式,因爲我可以爲data.frame訪問的data.table

mdf <- data.frame(a = c("A", "B", "C"), b = rnorm(3), c = 1:3) 
mdf[ mdf$a == "B", "c" ] 
[1] 2 

做的一個關於data.table一個模擬data.table返回包括關鍵列(s):

mdt <- data.table(mdf, key = "a") 
mdt[ "B", c ] 
    a c 
1: B 2 

mdt[ "B", c ][ , c] 
[1] 2 

我想念一個參數還是必須在最後一行完成?

回答

0

這些要麼將避免重複的C,但效率不高,因爲它們涉及計算第一個[]以及最後的答案:

> mdt[ "B", ][["c"]] 
[1] 2 
> mdt[ "B", ][, c] 
[1] 2 
+0

「B」之後的那些逗號是不需要的,我想。第三種方式,沿着同樣的路線:'mdt [「B」] $ c'。 – Frank

0

的一種方法是使用with=FALSE,但隨後你必須表達j,你會與一個data.frame

R> mdt[ "B", "c", with=FALSE ] 
    c 
1: 2 
+0

好點,但是然後返回值仍然是一個單元格'data.table'。 – Beasterfield