The other thing you can ask about a column without looking at a single row is what kind of thing is in it. kind is one of "number", "text", "truth" or "date".
That one line does not name a column at all, so it keeps working when the table gains one.
22.1 Case, and the two words that handle it
The name tests match exactly, so name starts "q" does not find a column called Q1_score. Mixed-case names are ordinary enough that this comes up quickly.
There is no flag for it, because a name is text and text has a case. Fold the case and ask the question.
Folding the case of every name automatically would have been the other option, and it is wrong: two columns can differ only by case, and a grammar that pretends otherwise cannot treat them as the two columns they are. Asking for it is one word.
22.2 Why you have to write name
The same three words also test what is inside a column, and there the subject is the column itself.
So starts means one thing, “this text begins with that text”, and the subject says what text is being asked about. Writing it is what keeps the two apart.
The alternative would have been pick(starting("q")), which is shorter and leaves nothing in the sentence to say whether starting is looking at a name or at a value. You would learn it from the position, which is the kind of rule this grammar removes rather than adds.
The tests are the same words in both languages. What differs is how a column’s name is reached, which is the same difference as everywhere else: R writes a bare name and Python writes col.name, so R spells this with base R’s startsWith and Python with a method.