Möglicherweise eine dumme Frage, aber ich sah kürzlich Matt Dowle Code mit as.factor()
schreiben, speziell for (col in names_factors) set(dt, j=col, value=as.factor(dt[[col]]))
in einem Kommentar zu this answer. Ich benutzte dieses Snippet, aber ich musste die Faktorstufen explizit einstellen, also musste ich as.factor(dt[[col]])
zu factor(dt[[col]], levels=my_levels)
ändern. Das hat mich denken lassen, was (wenn überhaupt) ist der Vorteil, as.factor()
gegenüber nur factor()
zu verwenden?Warum as.factor() anstelle von nur factor() verwenden
20
A
Antwort
21
as.factor
ist ein Wrapper für factor
, aber es ermöglicht eine schnelle Rückkehr an, wenn der Eingangsvektor bereits ein Faktor ist:
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: das Offensichtliche hier Angabe, aber: es ist nicht nur ein Wrapper ist , da diese "schnelle Rückkehr" Faktorstufen und Ordnungsneigung verlässt, während factor()
nicht:
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
Verwandte Themen
- 1. lapply (x, as.factor) Rückkehr nur eine Ebene
- 2. Warum spyOn anstelle von jasmine.createSpy verwenden?
- 3. Warum lange [] anstelle von Date [] verwenden?
- 4. Warum Varnish anstelle von Symfony Proxy verwenden?
- 5. Warum "[*]" anstelle von "[]" im Funktionsprototyp verwenden?
- 6. Warum leal anstelle von inq verwenden?
- 7. Warum verwenden Sie select() anstelle von sleep()?
- 8. Warum System.Threading.Interlocked.Decrement anstelle von minus verwenden?
- 9. Warum JLE anstelle von JL verwenden?
- 10. Warum 'Funktionsadresse == NULL' anstelle von 'falsch' verwenden?
- 11. Warum rbegin() anstelle von end() - 1 verwenden?
- 12. Warum verwenden C++ - Programmierer! = Anstelle von <
- 13. Warum Function.prototype.bind anstelle von Function.prototype.call verwenden?
- 14. Warum GWT.create() anstelle von neuen verwenden?
- 15. Warum nicht Cookies anstelle von Redux verwenden?
- 16. Warum SQLBRITE und warum wir es anstelle von SQLite verwenden?
- 17. Branching Factor und Tiefe
- 18. Warum Darcs anstelle von Git?
- 19. Warum Klassenmethode anstelle von staticmethod?
- 20. Warum Dom zum Parsen von Webseiten anstelle von Regex verwenden?
- 21. Warum verwenden Sie anstelle von console.log das $ log von angular?
- 22. Warum RDF anstelle von XML für das semantische Web verwenden
- 23. Warum sollten wir RNN anstelle von Markov-Modellen verwenden?
- 24. Warum verwenden Benutzer die Befehlszeile anstelle von IDE?
- 25. Warum JS Promises anstelle von IF/ELSE/Ternary verwenden?
- 26. Warum sollte ich Runnable anstelle von Thread verwenden?
- 27. Warum Floats anstelle der CSS-Eigenschaftstabelle verwenden
- 28. Warum verwenden Sie child_process anstelle von Cluster in Node?
- 29. Wie data.frame Spalte von Factor in numerische
- 30. Warum verwenden Flux-Architekturbeispiele Konstanten für Aktionstypen anstelle von Strings?
Namenskonsistenz ist ein großes. Fast alle gängigen Klassen haben eine 'as.class' Funktion. – Gregor