2

我目前正在尝试使用Oracle R Enterprise (ORE)实现用于分类和异常检测的支持向量机算法。我已经在 RStudio 中安装了 ORE 包,作为示例,我正在尝试执行Oracle Docs中给出的以下代码:

library(ORE)      
m <- mtcars
m$gear <- as.factor(m$gear)
m$cyl  <- as.factor(m$cyl)
m$vs   <- as.factor(m$vs)
m$ID   <- 1:nrow(m)
MTCARS <- ore.push(m)

我收到以下错误:

Error in .ore.obj() : attempt to apply non-function

我认为这是因为ore.push()无法识别,但是当我在 ORE 参考手册中搜索时,它已通过示例进行了明确定义。那么,它的解决方案可能是什么?

4

2 回答 2

1

您是否使用 ore.connect 连接到您的数据库?

ore.connect(user = "<userid", sid = "<sid>"
            , host = "<dbserver>"
            , password = "<userpwd"
            , all=TRUE)
于 2013-06-06T02:16:51.533 回答
0

ore.connect - 控制是否自动连接到闭包内的 ORE。这相当于使用与客户端会话相同的凭据进行 ore.connect 调用。默认值为假。

ore.is.connected()                               ## TRUE

ore.doEval( function(){ ore.is.connected() } )   ## FALSE

ore.doEval( function(){ ore.is.connected() },    ## TRUE
            ore.connect=TRUE
            )

因此,它会引发错误:

> ore.doEval( 
+   function()
+   { 
+     require(ORE)
+     ore.load("myData")
+   }
+ )
Error in .oci.GetQuery(conn, statement, data = data, prefetch = prefetch,  : 
ORA-20000: RQuery error
Error in OREbase:::.ore.dbGetQuery(qry) : attempt to apply non-function
ORA-06512: at "RQSYS.RQEVALIMPL", line 104
ORA-06512: at "RQSYS.RQEVALIMPL", line 101

但这很好:

> ore.doEval( 
+   function()
+   { 
+     require(ORE)
+     ore.load("myData")
+   },
+   ore.connect=TRUE
+ )
[1] "FOO" "BAR"
于 2014-09-23T13:38:37.137 回答