我正在嘗試將影像通道分配回RGBfrom 123。使用 應該很容易switch(),但奇怪的是,對于完全相同的情況,我假設會出現不同的結果:DT2給出正確答案,并DT1給出錯誤訊息:Error in switch(cc, "A", "B", "C") : EXPR must be a length 1 vector
請找到玩具示例,感謝您的建議。
library(imager)
library(data.table)
DT1 <- setDT(as.data.frame(boats))[][, {
RGB = switch(cc, "A", "B", "C")
list(RGB=RGB)
}, by=value]
DT2 <- data.table(cc=1:3, value=1:6)[,{
RGB = switch(cc, "A", "B", "C")
list(RGB=RGB)
}, by=value]
uj5u.com熱心網友回復:
EXPR長度必須為 1。嘗試這個:
setDT(as.data.frame(boats))[][, {
RGB = sapply(cc, \(cc) switch(cc, "A", "B", "C"))
list(RGB=RGB)
}, by=value]
要么
setDT(as.data.frame(boats))[][, {
RGB = c("A", "B", "C")[cc]
list(RGB=RGB)
}, by=value]
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/430455.html
標籤:r
