For practical purposes, we often say that a vector is something with a direction and a magnitude. This idea actually comes from the more commonly used Euclidean vector space, in which the concepts of direction and magnitude are defined (via the associated inner product). Thus, in a Euclidean vector space (which is what we most often work with), a vector can indeed be considered a direction along with a magnitude.
However, a vector need not satisfy these properties. A vector is in general an element of the set associated with a given vector space. This vector space need not be a Euclidean vector space, which would be required to define the concepts of "direction" and "magnitude". For example, take the set of continuous functions from (0,1) to R. This set, called C(0,1), together with the operations +:V*V->V (valuewise addition) and *:R*V->V (valuewise scalar multiplication), forms a vector space. In this context, the function f defined by f(x):=x is a "vector", but has no clearly identifiable direction or magnitude. (We can in fact define an inner product, thus making this a Euclidean vector space and giving the function some sort of direction and magnitude, but we need not do so).