The exception is the empty vector subscript.
Let's look at an example.
> foo <- matrix(1:16, 4, dimnames=list(letters[1:4], letters[5:8])) > names(foo) <- LETTERS[1:16] # add names > attr(foo, 'bar') <- TRUE # and an extra attribute > foo e f g h a 1 5 9 13 b 2 6 10 14 c 3 7 11 15 d 4 8 12 16 attr(,"names") [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" attr(,"bar") [1] TRUE > foo[] # returns the original object e f g h a 1 5 9 13 b 2 6 10 14 c 3 7 11 15 d 4 8 12 16 attr(,"names") [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P" attr(,"bar") [1] TRUE > foo[,] # but this does not e f g h a 1 5 9 13 b 2 6 10 14 c 3 7 11 15 d 4 8 12 16 > foo[1:16] # neither does this A B C D E F G H I J K L M N O P 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 >
Basically, foo[] behaves differently from others. Every other subset operation drops attributes (other than those directly relevent).
In case anyone is wondering, for Splus (old 3.4 on a Sun), the results are same for all but the matrix subset operation. Then we get
Splus3.4> foo[,] e f g h a 1 5 9 13 b 2 6 10 14 c 3 7 11 15 d 4 8 12 16 attr(,"names") [1] "A" "B" "C" "D" "E" "F" "G" "H" "I" "J" "K" "L" "M" "N" "O" "P"
In fact if a names attribute is present, Splus always subsets it as if it was an array with same dimensions as the actual object.
______________________________________________ [EMAIL PROTECTED] mailing list https://www.stat.math.ethz.ch/mailman/listinfo/r-devel
