I guess the "matrix" is actually a "data.frame", because people rarely use numeric values to represent time. The row.names are the attributes of the data frame, not the attributes of each column. To see this,
<br />
> tmp=data.frame(a=1:10,b=10:1)<br />
> row.names(tmp)=letters[1:10]<br />
> attributes(tmp)<br />
$names<br />
[1] "a" "b"<br />
<br />
$row.names<br />
[1] "a" "b" "c" "d" "e" "f" "g" "h" "i" "j"<br />
<br />
$class<br />
[1] "data.frame"<br />
<br />
> attributes(tmp[,1])<br />
NULL<br />
The data.frame might come from cbind, i.e. when you cbind a matrix with a data.frame, the result willl be a data.frame.
however, this doens't explain why using a for loop will work. it shouldn't work either if the problem is data.frame.