我正在尝试从RGB中将图像通道分配回123。使用switch()应该很容易,但奇怪的是,在完全相同的情况下,我假设出现了不同的结果:DT2给出了正确的答案,DT1给出了错误msg: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]发布于 2022-02-22 03:53:17
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://stackoverflow.com/questions/71215681
复制相似问题