如果用户提供了R不支持的颜色名称或颜色编号,则将其更改为;黄色“;

如果用户提供了R不支持的颜色名称或颜色编号,则将其更改为;黄色“;,r,plot,colors,R,Plot,Colors,我有一个名为pick.col的函数。此函数的用户可以提供颜色名称(例如“紫色”,“红色”等)或颜色编号(例如2,17等)作为参数 问题: 假设a提供了R不支持的颜色名称或颜色编号(例如,“非常浅棕色”或-1e16)。在这种情况下,我希望我的函数将用户错误选择的颜色名称或数字替换为“黄色” 但我如何让R检查用户提供的颜色编号或颜色编号是否受(即存在于)R的支持? pick.col = function(color) { plot(1, pch = 19, cex = 8 , col = colo

我有一个名为
pick.col
的函数。此函数的用户可以提供颜色名称(例如
“紫色”
“红色”
等)或颜色编号(例如
2
17
等)作为参数

问题: 假设a提供了R不支持的颜色名称或颜色编号(例如,“非常浅棕色”或
-1e16
)。在这种情况下,我希望我的函数将用户错误选择的颜色名称或数字替换为“黄色”

但我如何让R检查用户提供的颜色编号或颜色编号是否受(即存在于)R的支持?

pick.col = function(color) {

plot(1, pch = 19, cex = 8 , col = color)

}

pick.col(color = "yellow")

pick.col我个人会编写一个函数,将名称或数字作为参数,如果提供的类型不正确,则返回一个错误。然而,这里是你可以检查的方法。注意:我调用了函数pick\u col not pick.col

#检查整数的函数

is.wholenumber我知道R中的
颜色
列出了所有支持的颜色名称。但是我不知道如何找到支持的颜色编号。
colors()
命令可以打印您的所有颜色颜色编号被解释为当前调色板的索引,该索引由
palete()
返回。默认调色板是数字1-8,对应于
“黑色”、“红色”、“绿色3”、“蓝色”、“青色”、“洋红”、“黄色”、“灰色”
。就个人而言,我会在函数中允许数字或名称,而不是两者都允许。
pick.col <- function(color) {
  color <- ifelse(color %in% colors(), color, "yellow")
  plot(1, pch = 19, cex = 8 , col = color)
}

pick.col(color = "ksjdhf")
# function to check for whole numbers
is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) {
  abs(x - round(x)) < tol
}

pick_col <- function(color = "yellow") {
  # if color is an integer
  if(is.numeric(color) && is.wholenumber(color)) {
      ifelse(color <= length(palette()), color, "yellow")
  }
  # if color is a string
  else if(is.character(color)) {
    ifelse(color %in% colors(), color, "yellow")
  }
  # anything else
  else {
    "yellow"
  }
}