如何使函数参数成为 R 中向量的一个元素?

How to make function argument an element from the vector in R?

我有一个非数字元素的向量:

all_z <- c("red","yellow","blue")

我正在尝试创建一个函数,该函数要求参数 z 是向量中的元素之一。该函数还有另外两个参数:n (is.numeric = FALSE) 和 y (is.numeric = TRUE).

参数 n 和 y 产生输出 1 和输出 2; z 结果输出 3。目前我的代码看起来像这样(动词和名词是以前定义的向量):

byColor <- function(n,y,z) {
  if ((is.numeric(n) == FALSE) && (is.numeric(y) == TRUE)){
  output1 <- sample(verb, 1, replace = FALSE)
  output2 <- sample(noun, 1)
 }
}

我的问题是:我如何做到只有当参数 z 是向量 all_z 中的一个元素时才会出现 output3?我的最终目标是将所有三个输出串在一起,但前提是所有这三个参数都得到满足。有没有办法将 z 参数添加到我的“if”语句中?目前我可以获得我想要的输出,但它适用于任何非数字参数作为 z 而不仅仅是向量的元素。我希望我已经把这写清楚了;如果我应该进一步详细说明,请告诉我。谢谢!

如果您想知道向量中某处是否包含某个值,可以使用%in%函数。假设 all_z 已经定义,你可以使用这样的东西。

byColor <- function(n, y, z) {
    if ((is.numeric(n) == FALSE) &&
            (is.numeric(y) == TRUE) && 
            (z %in% all_z)) {
                output1 <- sample(verb, 1, replace = FALSE)
                output2 <- sample(noun, 1)
                output3 <- NULL
    }
}