I have each patch holding two lists: directions and magnitudes. Both lists contain values that are computed based on nearby turtles:
directionscontains the headings from the patch to the various turtles (so basically it is just the turtle's heading rotated by 180°);magnitudescontains a value that is directly proportional to the turtles' mass and inversely proportional to the distance between the patch and the turtles;- The items of the two lists are coupled in their order, i.e. the first item of 
directionsand the first item ofmagnitudesare computed based on the same turtle, the two second items are computed based on another turtle and so on. 
What I want to achieve is to come up with two single patch-own values, my-direction and my-magnitude, representing in some way the weighted average of directions, where the weights are magnitudes.
To put it another way, I am thinking of this in terms of vectors: turtles are exerting on the patch a force that can be represented as a vector, always pointing in the direction of the turtle and with a certain intensity (the magnitude). The resulting vector (represented by my-direction and my-magnitude) should be the resulting average of these forces.
I have seen this question. It does not address the issue of a weighted average; however it mentions the concept of circular mean. I've delved into it a bit, but I'm not sure how to apply it to my case and even if to apply it: does it still apply even with the formulation of the problem in terms of vectors?
I've seen this question/answer on SE Mathematics where it is said that the average vector can be found by averaging x- and y-coordinates of the initial vectors. In my case, ideally all the pairs of values in the two lists form a different vector with origin in the patch at issue, with heading found in directions and length found in magnitude. I suspect I can find the coordinates of each vector by multiplying its sine and cosine by its magnitude, however at this point I'd use some guidance as I might be overcomplicating things (either from the maths perspective or the NetLogo perspective).
This one below is a reduced version of the code that brings to the point where target-patches (not focusing on all patches, in order to make it quicker) have the two lists populated.
globals [
 target-patches 
]
turtles-own [
 mass
 reach
]
patches-own [
 my-direction
 my-magnitude
 directions-list
 magnitudes-list 
]
to setup
  clear-all
  
  set target-patches n-of 10 patches
  ask target-patches [
    set directions-list (list)
    set magnitudes-list (list)
    set pcolor yellow + 3
  ]
  
  create-turtles 10 [
    move-to one-of patches with [(not any? turtles-here) AND (not member? self target-patches)]
    set mass (random 11) + 5
    set reach (mass * 0.8)
    set size (mass / 8)
    set shape "circle"
  ]
  
  populate-lists
end
to populate-lists
  ask turtles [
    let relevant-targets (target-patches in-radius reach)
    ask relevant-targets [
      set directions-list lput (towards myself) (directions-list)
      set magnitudes-list lput (magnitude-based-on-distance) (magnitudes-list)
    ]
  ]
end
to-report magnitude-based-on-distance
  report [mass] of myself / (distance myself * 1.2)
end