我有一个data.table,称为价格有3列:自动收报机,日期和价格。 我跑了
setkey(prices,ticker,date)
如果我从代码中执行此操作,则可以使用
prices[list("MSFT",as.Date("2013-01-15")]
在2013-01-15只返回MSFT的行 但是,如果我写这个函数
getPrice <- function(ticker,date) {
prices[list(ticker,date)]
}
它返回整个data.table 我怀疑它与i参数中的作用域有关,但我无法让它工作。 如果我事先不知道参数,如何查询data.table?
答案 0 :(得分:3)
您的问题是您的函数中的变量名称。将它们改为例如x
和y
(因此它们与data.table
中的列名称不同),一切都会有效。您现在正在做的是构建一个包含所有data.table
和ticker
列的date
,然后将其加入,从而恢复原始数据。
另一个(更强大的)选项是在你的函数中执行这样的smth:
getPrice <- function(ticker,date) {
tmp = list(ticker, date)
prices[tmp]
}
有关详情,请参阅常见问题解答2.12和2.13 - http://datatable.r-forge.r-project.org/datatable-faq.pdf