我有我的工作流程有點敲竹槓的,因爲我試圖做一個雙迴路,以填補一個矩陣的工作。在我的劇本開始,我定義:了重新分類矩陣雙環填補另一個不工作
Tijd_SAT_i <- c("08", "09", "10", "11", "12", "13", "14")
D <- c(0, 0.01, 0.02, 0.03, 0.04, 0.05)
POD <- matrix(1:(length(Tijd_SAT_i)*length(D)), c(length(Tijd_SAT_i), length(D)))
FAR <- matrix(1:(length(Tijd_SAT_i)*length(D)), c(length(Tijd_SAT_i), length(D)))
之後的東西負載創建(42 86 7陣列)「基地」和「SAT」(86 42 7陣列)。 BASE和SAT都包含0到22之間的值作爲雙打,並且具有NA值(NA值表示荷蘭的概況以及除此之外的所有內容)。接下來,我需要填寫兩個矩陣POD(檢測概率)和FAR(誤報率)對於每個小時(Tijd_SAT_i),我想計算6個不同的閾值及其對POD和FAR的影響。稍後我會將這些值放入一個數據框中,然後使用RGL來繪製它們。我已經寫做填補POD和FAR代碼:
for (k in 1:(length(Tijd_SAT_i))) {
for (l in 1:(length(D))) {
pre_C_BASE <- BASE[,,k]
pre_C_SAT <- SAT[,,k]
pre_C_BASE[pre_C_BASE >= D[l]] <- 1
pre_C_BASE[pre_C_BASE < D[l]] <- 0
pre_C_SAT[pre_C_SAT >= D[l]] <- 1
pre_C_SAT[pre_C_SAT < D[l]] <- 0
C_SAT <- as.vector(SAT)
C_BASE <- as.vector(BASE)
C_table <- (with(warpbreaks, table(C_SAT, C_BASE)))
print(C_table)
print(dim(C_table))
#p <- C_table[1, 1]/(C_table[1, 1]+C_table[2, 1])
#f <- C_table[1, 2]/(C_table[1, 1]+C_table[1, 2])
#POD[k, l] <- p
#FAR[k, l] <- f
}
}
但C_table不會成爲2矩陣而是一個由1237 3351一爲一些模糊的原因2。 #s背後的東西因此無法執行。我在哪裏出錯了?
編輯:我發現對於2×2矩陣沒有顯示的原因:一個錯誤的參考SAT應pre_C_SAT。 現在我的意外事故矩陣(全部42個)。現在的問題是,如果我用#s運行該位,會出現「下標越界」錯誤。這是爲什麼?
編輯:我覺得麻煩就在於「表」並不總是輸出一個2×2矩陣。
編輯:Pffffrwt。我修好了它。在表格命令中有一個令人難以置信的煩人的嘀嗒聲,因爲當一個輸入向量中不存在零時,它不會返回2乘2的矩陣。我已經通過將1,0,0,1和1,0,0,1,0附加到隨後的矢量來解決它,強制創建所有4個值,然後從後面的等式中減去1。
是的,我已經從這個例子中複製warpbreaks,table命令:[link](http://stackoverflow.com/questions/7442207/contingency-table-with-r)。它應該創建一個2×2的連貫表,但事實並非如此。大概是因爲 pre_C_BASE [pre_C_BASE> = d [1]] < - 1 等不創建與僅1和0的新矩陣。也許我應該刪除NAs? – user2807278