【问题标题】:Passing Date Vector from R to KDB将日期向量从 R 传递到 KDB
【发布时间】:2014-11-20 21:24:15
【问题描述】:

从 R 调用 KDB 服务器上的函数

嗨,我在 KDB 服务器上编写了一个函数,它为我提供了每个日期的输出列表。我必须计算一组日期的函数,但是当我将它作为向量传递时,日期格式不起作用。请看下面的代码:

per <- c('2014.07.31', '2014.07.30','2014.07.29','2014.09.28')

per <- as.Date(per,"%Y.%m.%d")

PWPfunc <- function(k){

    execute(h,"pwp_frac[0.05;0.1;k;`AAPL]")
}

output <- lapply(per,PWPfunc).

KDB 无法识别来自 R 的日期格式。请帮助。

【问题讨论】:

  • 您是否收到类似Error in execute(h, "pwp_frac[0.05;0.1;k;`AAPL]") : Error from kdb+: `k 的错误?当您通过上述查询时,kdb 将按原样解析字符串并尝试使用 kdb 实例中的变量 k 执行 pwp_frac[0.05;0.1;k;`AAPL]。由于kdb实例中没有变量k,所以会提示错误。
  • 是的,我只得到了那个错误。我得到了它,所以 KDB 不会将变量“k”解析为其值,因为它是作为字符串传递的。有没有办法解决它..?
  • 我在想您可以将变量连接到查询字符串中并将其传递给 q。所以基本上你的最终字符串看起来像"pwp_frac[0.05;0.1;2014.07.31 2014.07.30 2014.07.29 2014.09.28;`AAPL]"
  • 谢谢 WooiKent,我是这么认为的..准备 R 中的字符串,其中日期得到解决,然后作为 execute(h,teststring)..感谢您的帮助。
  • 下面的答案能解决你的问题吗?那么请接受答案。

标签: kdb


【解决方案1】:

我通常会生成一个日期列表,并使用sub函数将它们转换为可读取的KDB

dates <- seq(as.Date("2014/11/01"), as.Date("2014/12/01"), by = "day")
dates <- sub('-',".",dates);dates <- sub('-',".",dates);
dates
 [1] "2014.11.01" "2014.11.02" "2014.11.03" "2014.11.04" "2014.11.05" "2014.11.06" "2014.11.07" "2014.11.08" "2014.11.09" "2014.11.10"
[11] "2014.11.11" "2014.11.12" "2014.11.13" "2014.11.14" "2014.11.15" "2014.11.16" "2014.11.17" "2014.11.18" "2014.11.19" "2014.11.20"
[21] "2014.11.21" "2014.11.22" "2014.11.23" "2014.11.24" "2014.11.25" "2014.11.26" "2014.11.27" "2014.11.28" "2014.11.29" "2014.11.30"
[31] "2014.12.01"

如果您想从列表中删除周末,您可以使用 chron 库:

require(chron)
dates <- seq(as.Date("2014/11/01"), as.Date("2014/12/01"), by = "day")
dates <- dates[!is.weekend(dates)]
dates <- sub('-',".",dates);dates <- sub('-',".",dates);
dates
 [1] "2014.11.03" "2014.11.04" "2014.11.05" "2014.11.06" "2014.11.07" "2014.11.10" "2014.11.11" "2014.11.12" "2014.11.13" "2014.11.14"
[11] "2014.11.17" "2014.11.18" "2014.11.19" "2014.11.20" "2014.11.21" "2014.11.24" "2014.11.25" "2014.11.26" "2014.11.27" "2014.11.28"
[21] "2014.12.01"

【讨论】:

    猜你喜欢
    • 2019-10-25
    • 1970-01-01
    • 2016-01-27
    • 1970-01-01
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-06
    相关资源
    最近更新 更多