首页 > 解决方案 > 如果给定元素不出现,则查找给定元素的索引或 NA

问题描述

我在一个问题上被困了好几个小时。如果有人知道如何解决它,非常感谢。

所以我正在尝试学习如何编写一个函数 f,它接受一个输入(数字)向量“vec”和一个整数“int”。

基本上,该函数应该返回“int”出现在“vec”中的什么位置,如果“int”没有出现在“vec”中,那么该函数应该返回“NA”。

所有这一切都是通过使用循环“for”来实现的。

最后,输出

sapply(1:4, function(x) print(f3(c(3, 3, 3, 2, 2, 1), x))) is

#    ```
#    [1] 6
#    [1] 4 5
#    [1] 1 2 3
#    NULL

这是我的代码,但我被困在这里,看不到我的问题的解决方案。

    f <- function(vec, int) {
  for (i in vec) 
    check <- vec[]== int 
  which(int == vec)
}

标签: rfunction

解决方案


你可以使用这样的东西:

f <- function(vec, int){
  if(all(vec != int)) return(NA)
  
  for(i in vec){
    if(i == int) return(which(vec == i))
  }
}

然后您可以检查它是否有效,例如,通过:

vect <- sample(1:10, 1000, replace = T)
inte <- 10

f(vect, inte)

推荐阅读