循环中的矢量元素索引-R

时间:2018-12-16 13:01:17

标签: r

我有一个数字矢量,我需要找到第一个数字的索引,该数字大于24且可被13整除,如果没有数字回答条件,则输出0。这是我写的代码:

numbers_vector=c(1,5,26,7,94)
for(i in numbers_vector){
  if(i>24&&i%%13==0){
    print(i)
  }else{
    print(0)
  }
}

返回的答案:

[1] 0
[1] 0
[1] 26
[1] 0
[1] 0

它应该返回数字3(索引),因为26回答了条件。

谁能看到我做错了什么? 谢谢

2 个答案:

答案 0 :(得分:1)

which.max(numbers_vector>24 & numbers_vector%%13==0)

这将为您提供所需的结果,但是如果没有合适的数字,则返回NA。如果您希望在这种情况下为零,请执行以下操作:

a=which.max(numbers_vector>24 & numbers_vector%%13==0)
ifelse(is.na(a), 0, a)

两个一般性评论:避免自动进入for循环。 R的最大优势在于矢量化计算。 B.避免使用打印来返回结果。

答案 1 :(得分:0)

只需要一个小改变:

numbers_vector=c(1,5,26,7,94)
for(i in numbers_vector){
  if(i>24 && i%%13==0){
    print(which(numbers_vector == i))
  }else{
    print(0)
  }

}

您正在打印i,它是数字本身而不是其索引