2015-08-30 43 views
1

實例數據如何使用一個變量在我的位置過濾行

d<-data.table(a=c(1,2,3,4,5)) 

我想這樣的結果:

d[a < 3] 

如何達到同樣的使用my.column

my.column<-'a' 
d[my.column < 3] 
#Empty data.table (0 rows) of 1 col: a 

雖然下面的作品,我希望有一個更好的辦法:

setnames(d,my.column,"my.column") 
d[my.column<3,] 
setnames(d,'my.column',my.column) 

注意,這也不起作用

setkey(d,my.column) 
+1

嘗試'd [get(my.column)<3]' –

+0

一些類似的問題附加選項:http://stackoverflow.com/q/29564002/1191259 – Frank

+0

謝謝,我沒有搜索「動態列名稱「。 –

回答

0

正如評論指出大衛,你可以使用

d[get(my.column) < 3] 

的另一種方式,這是我個人比較喜歡,是建立一個呼籲i而不是讓變量:

d[eval(as.name(my.column)) < 3] 

i使用時,有關性能不知道。在j arg中使用的情況下,我相信eval(as.name(會稍微快一點 - 取決於AFAIK列的數量。

相關問題