1

我有一个名为价格的数据表,它有 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?

4

1 回答 1

3

您的问题是函数中的变量名称。将它们更改为例如xand y(以便它们与您的列名不同data.table),一切都会正常工作。你现在正在做的是data.table用所有的tickerdate列构建一个,然后加入它,从而恢复原始数据。

另一个(更强大的)选项是在你的函数中做这样的事情:

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

有关更多信息,请参阅常见问题解答 2.12 和 2.13 - http://datatable.r-forge.r-project.org/datatable-faq.pdf

于 2013-05-21T21:33:13.473 回答