首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >?在"switch : EXPR必须是长度1向量“中出现错误

?在"switch : EXPR必须是长度1向量“中出现错误
EN

Stack Overflow用户
提问于 2022-02-22 03:49:23
回答 1查看 74关注 0票数 1

我正在尝试从RGB中将图像通道分配回123。使用switch()应该很容易,但奇怪的是,在完全相同的情况下,我假设出现了不同的结果:DT2给出了正确的答案,DT1给出了错误msg:Error in switch(cc, "A", "B", "C") : EXPR must be a length 1 vector

请找出玩具的例子,谢谢你的建议。

代码语言:javascript
复制
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]
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-02-22 03:53:17

EXPR的长度必须是1。试试这个:

代码语言:javascript
复制
setDT(as.data.frame(boats))[][, {
  RGB = sapply(cc, \(cc) switch(cc, "A", "B", "C"))
  list(RGB=RGB)
}, by=value]

代码语言:javascript
复制
setDT(as.data.frame(boats))[][, {
  RGB = c("A", "B", "C")[cc]
  list(RGB=RGB)
}, by=value]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71215681

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档