RMongodb 在转换数据的一些问题

来源:互联网 发布:淘宝小号交易源码 编辑:程序博客网 时间:2024/06/05 13:33

先上代码


####### Get Datas from MongoDb #########Summary:##Range: Internal##Args:#arg_db: Instance of MongoDb#arg_strNS: Namespace  ("NDAP.BondVariety")#arg_bRemoveId: Remove the "_id" column from datas##Return:#Return: Date FrameGetDatasMongo_Tool = function(arg_db , arg_strNS , arg_bRemoveId){    if(!mongo.is.connected(arg_db))    print("Mongo is not be connected")    lst_frm = list()    it = mongo.find(arg_db,arg_strNS,mongo.bson.empty())    i=1  while(mongo.cursor.next(it))    {        nTest <<- nTest + 1    bsonTmp = mongo.cursor.value(it)    lst = mongo.bson.to.list(bsonTmp)      if(arg_bRemoveId)      lst[["_id"]]<-NULL                 lst[sapply(lst,is.null)]<-NaN                lst_frm[[i]] = data.frame(lst)      i=i+1  }  dfrm = do.call(rbind,lst_frm)    dfrm}


注意这句话  

    lst[sapply(lst,is.null)]<-NaN

之前没有加这行时 在 data.frame(lst) 报错误,

Error in data.frame(Id = "100002.IB", preClose = 97.2136, open = 97.2136,  : 
  arguments imply differing number of rows: 1, 0

后来发现是lst (这是一个list) 中含有数据为NULL , 这样的数据无法转成dataframe 

后来通过   lst[sapply(lst,is.null)]<-NaN 这句话,把lst中所有的NULL都转成NAN (not a number)就可以顺利转换了



原创粉丝点击