Many containers, especially streaming containers (such as mpeg-ts) do not record a frame rate. And many containers allow for variable frame rate videos. ffmpeg attempt to determine the frame rate by looking at the first few seconds and counting frames. But if the frame rate varies or changes throughout the stream, r_frame_rate can become inaccurate.
Therefore r_frame_rate is a fine value to informational purposes. but it is best to look at the PTS for each frame individually.