Prawdopodobnie głupie pytanie, ale ostatnio widziałem Matt Dowle napisać kod z as.factor()
, w szczególności for (col in names_factors) set(dt, j=col, value=as.factor(dt[[col]]))
w komentarzu do this answer. Użyłem tego fragmentu, ale musiałem wyraźnie ustawić poziomy czynników, więc musiałem zmienić as.factor(dt[[col]])
na factor(dt[[col]], levels=my_levels)
. To dało mi do myślenia, co (jeśli w ogóle) jest korzyści z używania as.factor()
versus tylko factor()
?Dlaczego używać as.factor() zamiast tylko czynnik()
20
A
Odpowiedz
21
as.factor
jest opakowaniem dla factor
, ale pozwala na szybki powrót Jeśli wektor wejściowy jest już czynnikiem:
function (x)
{
if (is.factor(x))
x
else if (!is.object(x) && is.integer(x)) {
levels <- sort(unique.default(x))
f <- match(x, levels)
levels(f) <- as.character(levels)
if (!is.null(nx <- names(x)))
names(f) <- nx
class(f) <- "factor"
f
}
else factor(x)
}
Per @Frank: rzeczy oczywiste tutaj, ale: to nie jest zwykły wrapper , od tego „szybkiego powrotu” pozostawi poziom czynnika i nakazał-ności, sam natomiast factor()
nie będzie:
f = factor("a", levels=c("a","b"))
#[1] a
#Levels: a b
factor(f)
#[1] a
#Levels: a
as.factor(f)
#[1] a
#Levels: a b
Powiązane problemy
- 1. dlaczego używać „html, body” dla scrollTop zamiast tylko „html”
- 2. Dlaczego python VM ma co_names zamiast tylko używać co_consts?
- 3. Dlaczego używać krotek zamiast obiektów?
- 4. Dlaczego powinienem używać var zamiast typu?
- 5. Dlaczego warto używać spyOn zamiast jaśminu.createSpy?
- 6. Dlaczego warto używać ROLAP zamiast zwykłego MySQL?
- 7. Dlaczego warto używać Celery zamiast RabbitMQ?
- 8. Dlaczego warto używać argparse zamiast optparse?
- 9. Dlaczego używać JOIN zamiast wewnętrznych zapytań
- 10. Dlaczego warto używać AsQueryable() zamiast List()?
- 11. Dlaczego warto używać var zamiast nazwy klasy?
- 12. Dlaczego warto używać metody classmethod zamiast staticmethod?
- 13. Dlaczego używać lambda zamiast dopasowywania wzorców?
- 14. Dlaczego używać pustej klasy abstrakcyjnej zamiast interfejsu?
- 15. Dlaczego powinienem używać operatora.itemgetter (x) zamiast [x]?
- 16. Dlaczego ktoś miałby używać C zamiast C++?
- 17. Dlaczego warto używać Long.valueOf (...) zamiast długiego literału?
- 18. Dlaczego warto używać Function.prototype.bind zamiast Function.prototype.call?
- 19. przeszukiwanie wszerz rozgałęzienia czynnik
- 20. Dlaczego darcs zamiast git?
- 21. Kiedy używać "funkcji" zamiast "zabawy"?
- 22. Dlaczego nie używać pozycjonowania marży zamiast pozycji: względna góra 5px?
- 23. Dlaczego powinienem używać nhibernate zamiast struktury encji 4
- 24. Co używać zamiast org.jboss.resteasy.client.ClientRequest?
- 25. Co używać zamiast `qt5_use_modules`?
- 26. Czego używać zamiast Object.keys()?
- 27. WPF: Dlaczego powinienem używać istniejącego szkieletu MVVM zamiast pisać własne?
- 28. Dlaczego używać bloków statycznych zamiast bezpośredniego inicjowania zmiennych instancji?
- 29. Dlaczego muszę używać gnu99 zamiast c99, aby skompilować moduł jądra?
- 30. Dlaczego zastąpić równa się zamiast używać innej nazwy metody
Naming konsystencja jest duży. Prawie wszystkie popularne klasy mają funkcję 'as.class'. – Gregor