【问题标题】:How many even-indexed values are greater than the preceding value?有多少偶数索引值大于前一个值?
【发布时间】:2021-11-30 15:34:34
【问题描述】:

我想知道A[even number] 的计数大于A[even number-1]

>A
[1] 1 2 3 1 4 5 5 6 7

我下面的代码不起作用:

for (i in 1:length(A)){
  coun<-0
  if (length(A)%%2!=0){
    len <- length(A)-1
    for (i in 1: len){
      if (A[i+1]>A[len]){
        coun<-coun+1
      }
    }
  else if (A[i+1]>A[i]){
    coun<-coun+1  
}
}

在 A 中,计数应为 3,因为 (A[2]>A[1],A[4]A[5],A[8]>A[ 7],A[9] 不考虑,因为后面没有值)

【问题讨论】:

  • 我怀疑你在这里需要一个 for 循环。我建议先查看diff(A),然后查看diff(A) &gt; 0,然后适当考虑子集diff(A) &gt; 0,只查看奇偶差异。
  • 我想知道A[even number]的计数大于A[even number-1]
  • 更清楚了,谢谢!

标签: r compare


【解决方案1】:

几种方法:

## find the even indices and
## calculate the differences you want
even_ind = seq_along(A)[c(F, T)]
sum(A[even_ind] > A[even_ind - 1])
# [1] 3


## or, calculate all differences, 
## and take every other one
sum((diff(A) > 0)[c(T, F)])
# [1] 3

【讨论】:

  • 对 seq_along 的使用非常好。那么使用FT可以吗?
  • @tjebo 我不明白你关于FT 的问题。
  • 抱歉不清楚 - 我认为不建议使用 F 和 T 而不是 FALSE 和 TRUE
  • TRUEFALSE 更安全,这是真的。由于TF 的定义被覆盖而出现的错误由您决定。在我看来,这里的风险很低。
猜你喜欢
  • 2015-03-27
  • 1970-01-01
  • 2018-12-08
  • 1970-01-01
  • 2017-08-27
  • 1970-01-01
  • 2018-07-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多