moim rozumieniu jest to, że przypisanie do x[]
(lub przypisanie do obiektu z nawiasach kwadratowych, bez wartości - dla tych, którzy szukają tego problemu) nadpisuje wartości w x
, zachowując attributes
że x
może mieć, w tym wymiarów macierzy . W tym przypadku warto pamiętać, że matryca jest po prostu wektorem z dodanymi wymiarami.
Więc biorąc pod uwagę ...
x <- cbind(x1 = 3, x2 = c(4:1, 2:5))
dimnames(x)[[1]] <- letters[1:8]
attributes(x)
#$dim
#[1] 8 2
#
#$dimnames
#$dimnames[[1]]
#[1] "a" "b" "c" "d" "e" "f" "g" "h"
#
#$dimnames[[2]]
#[1] "x1" "x2"
... to zachowa wymiary i imiona zapisane jako atrybuty w x
x[] <- as.integer(x)
Chociaż nie będzie ...
x <- as.integer(x)
Ta sama logika dotyczy również wektorów:
x <- 1:10
attr(x,"blah") <- "some attribute"
attributes(x)
#$blah
#[1] "some attribute"
Więc ta zachowuje wszystkie swoje piękne atrybuty:
x[] <- 2:11
x
# [1] 2 3 4 5 6 7 8 9 10 11
#attr(,"blah")
#[1] "some attribute"
niniejsza nie będzie:
x <- 2:11
x
#[1] 2 3 4 5 6 7 8 9 10 11
Porównaj wyniki normalnym przypisania vs. przypisanie do 'x []' jako więc. Porównaj: 'x [] <- as.integer (x); x; 'to' x <- as.integer (x); x; ' – thelatemail