【问题标题】:Function for querying a data.table查询data.table的函数
【发布时间】:2013-05-21 21:24:58
【问题描述】:

我有一个名为 prices 的 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?

【问题讨论】:

  • 没有您的数据我无法确认,但使用玩具示例这对我来说很好。

标签: r data.table


【解决方案1】:

您的问题是函数中的变量名称。将它们更改为例如x 和 y(因此它们与您的 data.table 中的列名不同)并且一切都会正常工作。您现在正在做的是构建一个包含所有ticker 和date 列的data.table,然后将其连接起来,从而恢复原始数据。

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

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

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

【讨论】:

  • 已经提到计划 (In the NEWS for version 1.8.2) 添加 ..() 语法,以便 .() 和 ..() 类似于文件系统的 ./ 和 ../;即,.() 在 DT 框架内计算,而 ..() 在父范围内计算。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多