如何使函数参数成为R中向量的元素?
Posted
技术标签:
【中文标题】如何使函数参数成为R中向量的元素?【英文标题】:How to make function argument an element from the vector in R? 【发布时间】:2020-09-07 15:00:20 【问题描述】:我有一个非数字元素的向量:
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)
我的问题是:我如何才能使 output3 仅在参数 z 是向量 all_z 中的元素时才出现?我的最终目标是将所有三个输出串在一起,但前提是所有这三个参数都得到满足。有没有办法将 z 参数添加到我的“if”语句中?目前我可以获得我想要的输出,但它适用于任何非数字参数作为 z 而不仅仅是向量的元素。我希望我已经写得很清楚了;请让我知道我是否应该进一步详细说明。谢谢!
【问题讨论】:
if(z %in% all_z) output <- something
?你的问题我不清楚。您可以根据实际数据调用该函数并编辑您的问题吗? byColor
函数中的第二个
不应该存在。
【参考方案1】:
如果您想知道某个值是否包含在向量中的某处,可以使用%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
【讨论】:
以上是关于如何使函数参数成为R中向量的元素?的主要内容,如果未能解决你的问题,请参考以下文章