2013-05-21 91 views
1

我有一个data.table称为价格有3列:股票代码,日期和价格。 我已经运行查询data.table功能

setkey(prices,ticker,date) 

如果我这样做,从代码,它的工作原理

prices[list("MSFT",as.Date("2013-01-15")] 

在2013年1月15日 只返回一行MSFT不过,如果我写的这个功能

getPrice <- function(ticker,date) { 
    prices[list(ticker,date)] 
} 

它返回整个data.table 我怀疑它有话跟在我的参数范围界定,但我不能得到它的工作。 如果我事先不知道参数,我该如何查询data.table?

+0

没有你的数据我无法证实,但使用一个玩具的例子,这对我来说很好。 – Justin

回答

3

你的问题是你的函数中的变量名称。将它们改为例如xy(以便它们与data.table中的列名不同),并且所有内容都可以正常工作。你现在正在做的是构建一个data.tabletickerdate所有列,然后加入,从而恢复原始数据。

另一个(更强大的)选择是做水木清华这样在你的功能:更多关于此

getPrice <- function(ticker,date) { 
    tmp = list(ticker, date) 
    prices[tmp] 
} 

参见常见问题解答2.12和2.13 - http://datatable.r-forge.r-project.org/datatable-faq.pdf

+0

已经提到了计划([1.8.2版的NEWS](https://r-forge.r-project.org/scm/viewvc.php/pkg/NEWS?view=markup&root=datatable))添加..()语法,以便。()和..()类似于文件系统的./和../;即。()在DT的框架内评估,而在父范围内评估..()。 – mnel