# Trying to collect indices with multiple conditions

**URL:** <https://discourse.julialang.org/t/trying-to-collect-indices-with-multiple-conditions/89217>\
**Category:** New to Julia\
**Created:** [October 24, 2022, 10:42pm UTC](https://discourse.julialang.org/t/trying-to-collect-indices-with-multiple-conditions/89217 "2022-10-24T22:42:17Z")\
**Posts on this page:** 5\
**Page:** 1

<div class="post-metadata">

**Author:** ![Muhammad\_Nadeem](https://avatars.discourse-cdn.com/v4/letter/m/bc79bd/32.png) [@Muhammad\_Nadeem](https://discourse.julialang.org/u/Muhammad_Nadeem)\
**Post date:** [October 24, 2022, 10:42pm UTC](https://discourse.julialang.org/t/trying-to-collect-indices-with-multiple-conditions/89217/1 "2022-10-24T22:42:17Z")

</div>

Hello all,

I am trying to find all the indicies where certain criteria is met, here is my code

ind1 = Vector{Float64}(undef, 4)

for i in 1:4  
ind1[i] = intersect(findall(x-\>x==l, z), findall(sum(M[i,j]\*z[j] for j in items)+sum(N[i,j]\*w[j] for j in items)+q[i])\>0)  
end

It is giving me error

TypeError: non-boolean (Float64) used in boolean context

Any help or guidance will be appreciated 🙂

Thank you

---

<div class="post-metadata">

**Author:** ![contradict](https://avatars.discourse-cdn.com/v4/letter/c/ac91a4/32.png) [@contradict](https://discourse.julialang.org/u/contradict)\
**Post date:** [October 24, 2022, 10:56pm UTC](https://discourse.julialang.org/t/trying-to-collect-indices-with-multiple-conditions/89217/2 "2022-10-24T22:56:13Z")

</div>

You can use 3 backticks ````` to display formatted code. After a bit of formatting, the second condition looks like you misplaced a parenthesis. You wrote of `findall( formula ) > 0` for the second condition, I think you meant `findall(formula > 0)` as below:

```julia
ind1 = Vector{Float64}(undef, 4)

for i in 1:4
    ind1[i] = intersect(
        findall(x->x==l, z),
        findall(sum(M[i,j]*z[j] for j in items)+sum(N[i,j]*w[j] for j in items)+q[i]>0),
    )
end

```

---

<div class="post-metadata">

**Author:** ![Muhammad\_Nadeem](https://avatars.discourse-cdn.com/v4/letter/m/bc79bd/32.png) [@Muhammad\_Nadeem](https://discourse.julialang.org/u/Muhammad_Nadeem)\
**Post date:** [October 24, 2022, 11:05pm UTC](https://discourse.julialang.org/t/trying-to-collect-indices-with-multiple-conditions/89217/3 "2022-10-24T23:05:12Z")

</div>

Oh ok, thanks alot, but now it is giving me this error 🙂 .

MethodError: Cannot `convert` an object of type Vector{Int64} to an object of type Int64

P.S I have converted ` ind1 = Vector{Int64}(undef, 4)`

---

<div class="post-metadata">

**Author:** ![contradict](https://avatars.discourse-cdn.com/v4/letter/c/ac91a4/32.png) [@contradict](https://discourse.julialang.org/u/contradict)\
**Post date:** [October 24, 2022, 11:09pm UTC](https://discourse.julialang.org/t/trying-to-collect-indices-with-multiple-conditions/89217/4 "2022-10-24T23:09:53Z")

</div>

Right, intersect is returning a vector of indices and you are attempting to assign it to a single Int64 in your ind1 vector. Try

```julia
ind1 = map(1:4) do i
    intersect(
        findall(x->x==l, z),
        findall(sum(M[i,j]*z[j] for j in items)+sum(N[i,j]*w[j] for j in items)+q[i]>0),
    )
end

```

That should result in a `Vector{Vector{Int64}}`.

---

<div class="post-metadata">

**Author:** ![Muhammad\_Nadeem](https://avatars.discourse-cdn.com/v4/letter/m/bc79bd/32.png) [@Muhammad\_Nadeem](https://discourse.julialang.org/u/Muhammad_Nadeem)\
**Post date:** [October 25, 2022, 3:23am UTC](https://discourse.julialang.org/t/trying-to-collect-indices-with-multiple-conditions/89217/5 "2022-10-25T03:23:55Z")

</div>

> [@contradict](#):
>
> ```julia
> ind1 = map(1:4) do i
> intersect(
> findall(x->x==l, z),
> findall(sum(M[i,j]*z[j] for j in items)+sum(N[i,j]*w[j] for j in items)+q[i]>0),
> )
> end
> 
> ```

Nope this still doesnt work, See the follwoing code:

```julia
l = [0, 0, 0, 0]
z = [0,1,1,1]
ind1 = map(1:4) do i
    findall(x->x==l, z)
end

```

The answer should be: ind1 = [1] as at only index one we have z=l. but it isnt, it gives me [0,0,0,0] ☹
