Ten wpis (Lazy evaluation in R – is assign affected?) obejmuje kilka wspólnych spraw, ale nie jestem pewien, czy odpowiada na moje pytanie.Dlaczego przypisywanie jest złe?
ja przestałem używać assign
kiedy odkryłem rodzinę apply
dość jakiś czas temu, aczkolwiek czysto ze względu na elegancję w sytuacjach takich jak ta:
names.foo <- letters
values.foo <- LETTERS
for (i in 1:length(names.foo))
assign(names.foo[i], paste("This is: ", values.foo[i]))
który może być zastąpiony przez:
foo <- lapply(X=values.foo, FUN=function (k) paste("This is :", k))
names(foo) <- names.foo
Jest to również powód tego (http://cran.r-project.org/doc/FAQ/R-FAQ.html#How-can-I-turn-a-string-into-a-variable_003f) R-faq mówi, że należy tego unikać.
Teraz wiem, że assign
jest ogólnie mile zaskoczony. Ale czy są inne powody, których nie znam? Podejrzewam, że może zepsuć ocenę lub leniwe oceny, ale nie jestem pewien? Przykładowy kod demonstrujący takie problemy będzie świetny.
W moim rozumieniu setNames jest po prostu ukrytym 'imionami <-'. który jest moim kolejnym zwierzakiem! Czy istnieje szczególna przewaga nad "nazwami"? – asb
Dlaczego powinien to być "zirytowany zwierzak"? Jest łatwy do odczytania, a niektórzy wolą bardziej zwarty kod. Mój zwierzak korzysta z pętli, gdy nie są potrzebne. –
@asb jak o 'sapply (X = values.foo, FUN = funkcja (k) wklej (" To jest: ", k), upraszczaj = FALSE)', aby ominąć twoje 'name <-' call ... lub ukryj to inaczej, jak sądzę. – GSee