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