Adding new objects at existing object locations

I have many cylinders set up at specific positions throughout my scene, and I’m looking for a way to add a new sphere at each cylinder’s individual origin.

My first attempt was to duplicate the cylinders and transform the new objects to spheres, but I couldn’t figure out how to transform a shape into a different basic shape. I found the cast and transform to sphere panels, but they didn’t do what I hoped they would.

Am I missing an easy built-in solution to my problem? Is there some way to say “make N spheres at these N locations” or “move object to another object’s position for each of these N objects?” I’d like to avoid manually typing in the sphere locations for every object. I’m very new to Blender so I’m still learning what’s possible.

My first attempt was to duplicate the cylinders and transform the new objects to spheres, but I couldn’t figure out how to transform a shape into a different basic shape.

To your scene add a sphere.
Select all the objects you want to make a sphere and then lastly select the sphere object (this must be the last object selected so it is the active object). Now press Ctrl+L and link the object data of the sphere to the other selected objects. They are all linked so if you change the shape of one sphere they will all change. If you want each to be unlinked, select them all and press U to make each object a single user

You can get all these shortcut operations from the Object menu

Demo: http://screencast.com/t/NYbEVRykA

Excellent, thank you so much!