我有一个数字矢量,我需要找到第一个数字的索引,该数字大于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回答了条件。
谁能看到我做错了什么? 谢谢
答案 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
,它是数字本身而不是其索引