Suppose $cf(x)=f(cx)$ and $f:\mathbb{R}\to\mathbb{R}$. I believe it follows that $f(x+y)=f(x)+f(y)$.
Proof: There is some $c$ such that $y=cx$. Then $$f(x+y)=f\left((1+c)x\right)=(1+c)f(x)=f(x)+cf(x)=f(x)+f(cx)=f(x)+f(y)$$
QED.
I wonder if the same thing holds for when $f:\mathbb{R}^n\to\mathbb{R}^n$? I can't use the same trick, because all vectors are not scalar multiples.
I tried thinking of it in terms of basis units, but didn't get anywhere.
Let $$ f(x,y) = \begin{cases} (x,y) & xy > 0 \\ 0 & xy \leq 0 \end{cases} $$
It is clear that $cf(\vec{z}) = f(c\vec{z})$ for any $c\in \mathbb{R}$. But $f$ is not a linear map.
further counter examples can be constructed in polar coordinates. Let $(r,\omega)\in \mathbb{R}_+ \times \mathbb{S}^{n-1}$ denote the spherical coordinates of $\mathbb{R}^n$. Then a map
$$ f(r,\omega) = (\lambda(\omega)r,\omega) $$
satisfies $cf(\vec{v}) = f(c\vec{v})$ for every $\lambda:\mathbb{S}^{n-1}\to \mathbb{R}$ that satisfies $\lambda(\omega) = \lambda(-\omega)$. Clearly many of these are not linear.