小编Man*_*noj的帖子

笛卡尔加入data.table

我正在尝试使用data.table进行完整的笛卡尔联接,但运气不佳.

码:


a = data.table(dt=c(20131017,20131018))
 setkey(a,dt)

 b = data.table(ticker=c("ABC","DEF","XYZ"),ind=c("MISC1","MISC2","MISC3"))
 setkey(b,ticker)
Run Code Online (Sandbox Code Playgroud)

预期产量:

merge(data.frame(a),data.frame(b),all.x=TRUE,all.y=TRUE)
Run Code Online (Sandbox Code Playgroud)

我已经试过merge(a,b,allow.cartesian=TRUE),但它给了我下面的错误- " Error in merge.data.table(a, b, allow.cartesian = TRUE) : A non-empty vector of column names for通过is required."

我正在使用R version 3.0.1 (2013-05-16)最新的data.table套餐.任何帮助将不胜感激!

问候

r data.table

11
推荐指数
2
解决办法
4594
查看次数

使用try语句进行data.table和错误处理

我试图在我的R代码中加入一些错误处理.

下面的伪代码:


foo = function(X,Y) {
...

return(ret.df);
}

DT = DT[,ret.df := foo(X,Y), by=key(DT)];
Run Code Online (Sandbox Code Playgroud)

目的是检查是否有某种组合X,Y该函数foo会引发错误.如果它确实引发了错误,那么我想在最终结果数据帧中跳过该记录组合.我试过下面没有太多运气:


    DT = DT[ ,  try(ret.df = : foo(X,y)); 
    if(not (class(ref.df) %in% "try-error') ) {
        return(ret.df);
    }, by = key(DT) ];
Run Code Online (Sandbox Code Playgroud)

我总是可以尝试编写一个包装器foo来进行错误检查,但是我正在寻找一种直接在data.table调用中编写语法的方法.这可能吗?

感谢您的帮助!

r data.table

6
推荐指数
2
解决办法
570
查看次数

标签 统计

data.table ×2

r ×2