See help('[.data.frame'): Extract or Replace Parts of a Data Frame.
Description for i, j arguments reads: "elements to extract or replace. For [ and [[, these are numeric or character or, for [ only, empty. "
Of course, i, j may also be logical (recycled), e.g. ....
 Subject Wt Dose Time conc
<0 rows> (or 0-length row.names)
I can't remember where this behavior is documented. Not seeing it at the links below.