作为逻辑运算的结果,R中的矩阵赋值

作为逻辑运算的结果,R中的矩阵赋值,r,oracle,matrix,R,Oracle,Matrix,对于R,我想生成一个矩阵,其中ε是列,行是输入数据。但是,当我尝试为矩阵赋值时,会出现一个错误: “结果中的错误[,j]ε[j]): 替换长度为零” 我尝试了很多方法,但我还是坚持着。请注意,在使用oracle R对象时会发生此问题。请参阅下面重现问题的小代码: library(ORE) ore.connect(user="XXXX", service_name="XXXXX", host="XXXXXXXX", password="XXXXX", port=XXXX, all=TRUE) o

对于R,我想生成一个矩阵,其中ε是列,行是输入数据。但是,当我尝试为矩阵赋值时,会出现一个错误:

“结果中的错误[,j]ε[j]): 替换长度为零”

我尝试了很多方法,但我还是坚持着。请注意,在使用oracle R对象时会发生此问题。请参阅下面重现问题的小代码:

library(ORE)

ore.connect(user="XXXX", service_name="XXXXX", host="XXXXXXXX", password="XXXXX", port=XXXX, all=TRUE)
ore.sync('MYDATABASE') 
ore.attach()

ore.pull(MY_TABLE)

trainingset <- MY_TABLE$MY_COLUMN[1:1000]
crossvalidationset <- MY_TABLE$MY_COLUMN[1001-2000]

# Training
my_column_avg <- mean(trainingset)
my_column_std <- sd(trainingset)

# Validation
probabilities <- dnorm(crossvalidationset,my_column_avg,my_column_std)

epsilons <- c(0.01,0.05,0.1,0.25,0.5,0.75,0.8)

num_rows <- length(probabilities)
num_cols <- length(epsilons)
results <- matrix(TRUE, num_rows, num_cols)

# Anomaly detection results for several epsilons
for(j in 1:num_cols)
{    
    results[,j] <- (probabilities > epsilons[j])
}
库(ORE)
ore.connect(user=“XXXX”,service\u name=“XXXXX”,host=“XXXXXXXX”,password=“XXXXX”,port=XXXX,all=TRUE)
ore.sync('MYDATABASE')
附件(
矿石拉力(我的桌子)

trainingset对象MY_表是oracle表对象,不是数据帧,也不是概率,因为它是从MY_表派生的。 但是,当尝试将值分配给R矩阵时,会出现如下所示的错误:

results[,j] <- (probabilities > epsilons[j])
结果[,j]ε[j])
上述错误的原因是由于使用了oracle R库(ORE)

如果从一开始就在上面的代码中使用公共R数据结构,那么这个问题就不会发生。例如,将MY_TABLE oracle对象替换为数据帧


因此,一个好的做法是尽可能摆脱Oracle R对象并使用R数据帧。

什么是
inkpressureprob
?我已将其设置为0.12,脚本运行正常。您好,请替换inkpressureprob以获取概率。看看上面的新代码。你的代码对我来说很好!问题被改写,以更好地代表问题。事实证明,问题只发生在涉及Oracle R对象的情况下。因此,它们包含在示例代码中。