Correcting Oracle JDBC Code: Direct vs Indirect Access to Basket Rules Items
The issue here is that you’re trying to access the items from the lhs
attribute of the basket_rules
object using the row index, but you should be accessing it directly.
In your code, you have this:
for(row in 1:length(basket_rules)) {
jdbcDriver2<-JDBC(driverClass = "oracle.jdbc.OracleDriver",classPath = "D:/R/ojdbc6.jar", identifier.quote = "\"")
jdbcConnection2<-dbConnect(jdbcDriver,"jdbc:oracle:ip:port","user","pass")
sorgu <- paste0("insert into market_basket_analysis_3 (lhs,rhs,support,confidence,lift) values ('",as(as(attr(basket_rules[row], "lhs"), "transactions"), "data.frame")$items["item1"],"','",as(as(attr(basket_rules[row], "rhs"), "transactions"), "data.frame")$items["item2"],"','",attr(basket_rules[row],"quality")$support,"','",attr(basket_rules[row],"quality")$confidence,"','",attr(basket_rules[row],"quality")$lift,"')")
You should change it to:
for(row in 1:length(basket_rules)) {
jdbcDriver2<-JDBC(driverClass = "oracle.jdbc.OracleDriver",classPath = "D:/R/ojdbc6.jar", identifier.quote = "\"")
jdbcConnection2<-dbConnect(jdbcDriver,"jdbc:oracle:ip:port","user","pass")
sorgu <- paste0("insert into market_basket_analysis_3 (lhs,rhs,support,confidence,lift) values ('",as(as(attr(basket_rules[row], "lhs"), "transactions"), "data.frame")$items,"','",as(as(attr(basket_rules[row], "rhs"), "transactions"), "data.frame")$items,"','",attr(basket_rules[row],"quality")$support,"','",attr(basket_rules[row],"quality")$confidence,"','",attr(basket_rules[row],"quality")$lift,"'")
You can’t access the items
column directly in this way, you should use $items
instead.
Last modified on 2024-08-01