在整数向量中找到奇数的索引

Tov*_*ird 7 integer r

假设我们有一些向量:

someVector = c(1, 3, 4, 6, 3, 9, 2, -5, -2)
Run Code Online (Sandbox Code Playgroud)

我想得到一个具有someVector所有奇数元素位置的向量

所以在这种情况下,它看起来像......

resultVector = c(1, 2, 5, 6, 8)
Run Code Online (Sandbox Code Playgroud)

GSe*_*See 11

> which(someVector %% 2 == 1)
[1] 1 2 5 6 8
Run Code Online (Sandbox Code Playgroud)


ags*_*udy 6

library(schoolmath)
which(is.odd(someVector))
[1] 1 2 5 6 8
Run Code Online (Sandbox Code Playgroud)

只是为了好玩这里的is.odd功能代码:

function (x) 
{
  start <- 1
  end <- length(x) + 1
  while (start < end) {
    y <- x[start]
    if (y == 0) {
      cat("Please enter a number > 0")
      end
    }
    test1 <- y/2
    test2 <- floor(test1)
    if (test1 != test2) {
      if (start == 1) {
        result = TRUE
      }
      else {
        result <- c(result, TRUE)
      }
    }
    else {
      if (start == 1) {
        result = FALSE
      }
      else {
        result <- c(result, FALSE)
      }
    }
    start <- start + 1
  }
  return(result)
}
Run Code Online (Sandbox Code Playgroud)

当然,不要使用这个功能!

  • +1"不要使用此功能!".这太丑了很有趣. (3认同)
  • 哇!`is.odd`函数中有很多代码.为什么这比`is.odd < - function(x)x %% 2 == 1`更好?...而且,看起来会慢一些,因为它在while循环中增长一个向量(即使函数已经知道输出的长度) (2认同)