Are they the same for data.frames? YES
Are they the same in general?
Not quite--the big difference is that colnames also works for matrices, whereas names does not (just dataframes).
In addition, you can use names to set/get the names of vectors (and, for obvious reasons, you can't do this with colnames--the result is NULL for getting and an error for setting).
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…