There are many kinds of RK methods that have extensions to exploit linearity. They all use some form of exponential or Lie Group idea (again exponential) to do so. Thus they generally do some form of integrating factor method and then apply the Runge-Kutta method to the IF transformed equation. If you want to see a listing of some of these, you can check out the methods found in DifferentialEquations.jl.
There are standard RK methods that achieve superconvergence on linear problems, i.e. hit an order higher. DiffEqDevTools.jl implements almost every tableau I could find in the literature, and from that, we found the following superconvergence cases:
You can dig up the papers for these methods by finding them in the 8,000 lines of coefficients tableau page. Looking at the papers, this superconvergence behavior seems to be by accident. But it does show it's possible to achieve an order higher than expected on linear equations.
Now onto the more sophisticated methods. In the Split ODE Solvers section you will find the methods compatible with the form:
$$u' = Au + f(u,p,t)$$
also known as a semilinear ODE. These are known as the exponential Runge-Kutta methods (exponential RK). This is probably the most common use, but there are others.
If you just have $u' = Au$ then, of course, $u(t) = \exp(TA)u(0)$ but you wouldn't want to just use the scaling and squaring methods built into most languages so you'd want to use something that exploits the Krylov subspace for large exponential times vector calculations, hence the LinearExponential
method.
Another common case are methods that specialize in $u' = A(t)u$, which is what most Magnus methods specialize in. You can find the list of methods for this category as the state-independent solvers. The problem you write downfalls into the Magnus methods since you can make $\hat{A}(t) = A(t) - R$.
Then there are the Lie Group methods, like the Runge–Kutta–Munthe-Kaas method, which specializes in the form $u' = A(u)u$. Then of course there are a few methods that allow for time and state dependence, i.e. $u' = A(u,t)u$, specifically some Crouch-Grossman Runge Kutta methods, but as you specialize less it tends to get less and less benefit.
As with any of the DifferentialEquations.jl methods, you can from the Julia REPL do ?alg
on the algorithm to dig up the original source if you want more information.
I want to leave with one last detail though that people tend to ask about this kind of thing. Let's say you have an affine equation:
$$u' = A(t)u + b(t)$$
could you still exploit the linear structure with a Magnus method? The answer is yes. What you need to do is exploit the fact that an affine transformation is just a linear transformation in a larger space. I.e. you define $\hat{u}$ such that $\hat{u} = [u;1]$, so you append a 1 to your original space, and then $\hat{A}(t)$ has a block that is $A$, with a row of 0's appended on the bottom and the column $b$ appended to the right. If you work it out you'll see that the extended portion of the equation has an initial condition 1 and 0 derivative, and so $\hat{A}\hat{u} = A(t)u + b(t)$ on the non-constant portion. This means you can also encode affine transformations into a form to use these specialized RK methods.
So Magnus, RK of Crouch–Grossman type, Runge–Kutta–Munthe-Kaas, exponential Runge-Kutta, Cayley methods, and more. There are tons of methods that exploit this property, and there are libraries that implement them. In particular, DifferentialEquations.jl uses specialized matrix exponential methods, is GPU-compatible, automatically constructs adjoints, etc. That said, this is all far from complete and there are many more things that can be done. But that's the most complete listing that I know of. For more on the backgrounds of these methods, you might want to check out Hairer's Geometric Numerical Integration book which has a very good discussion on a subset of the methods described here.