Frequency-selective channel: Basic in theory
In theory you need to recompute your precoding for every subcarrier.

In practice you might not want to do this as the computational complexity is pretty high. What one then typically does is grouping adjacent subcarriers and time indices together into "chunks" (I believe they are called resource blocks in LTE?) and just compute one precoding strategy for the entire chunk. The size of the chunk is a trade-off: if we make it too large, the quality of the precoding degrades because the channels becomes less and less similar over frequency and time. If we make it too small, computational complexity becomes an issue.

To determine the effective channel for the entire chunk that is used to compute the precoding, various strategies exist. The simplest might be just averaging the channels, for the MIMO case we often prefer to average the second-order statistics.