R gelten error: 'X' muss benannt dimnames
Den "anwenden" - Dokumentation erwähnt, dass, "Wo" X " genannt hat, dimnames, es kann eine Zeichen-Vektor-Auswahl der dimension der Namen." Ich würde gerne verwenden, gelten die Daten.frame nur für bestimmte Spalten. Kann ich mit der Funktion dimnames, dies zu tun?
Ich weiß, ich kann Teilmenge() X nur Spalten von Interesse, sondern ich will verstehen "benannt dimnames" besser.
Unten finden Sie einige Beispiel-code:
> x <- data.frame(cbind(1,1:10))
> apply(x,2,sum)
X1 X2
10 55
> apply(x,c('X2'),sum)
Error in apply(x, c("X2"), sum) : 'X' must have named dimnames
> dimnames(x)
[[1]]
[1] "1" "2" "3" "4" "5" "6" "7" "8" "9" "10"
[[2]]
[1] "X1" "X2"
> names(x)
[1] "X1" "X2"
> names(dimnames(x))
NULL
Du musst angemeldet sein, um einen Kommentar abzugeben.
Wenn ich Sie richtig verstehe, möchten Sie verwenden, gelten nur auf bestimmte Spalten. Dies ist nicht was benannt dimnames erfüllen würde. Das anwenden der Funktion auf eine matrix oder Daten.Rahmen bezieht sich immer auf alle den Zeilen oder alle Spalten. Die benannten dimnames können Sie wählen, um Zeilen oder Spalten von Namen anstelle von "normalen"
1
und2
:Jedoch, wenn Sie die Spalte-Namen, die Sie anwenden möchten, könnten Sie es tun, indem man zuerst nur die Spalten:
Namens dimnames ist eine Nebenwirkung, die dimnames sind, werden als Liste in der "dimnames" - Attribut in einem
matrix
oderarray
. Jede Komponente der Liste entspricht einer dimension benannt werden kann. Dies ist wahrscheinlich mehr nützlich für mehrdimensionale arrays...Für eine
data.frame
gibt es keine "dimnames" - Attribut. Eindata.frame
ist im wesentlichen eine Liste, also die Liste der "Namen" - Attribute entspricht dem Spaltennamen, und eine zusätzliche "Reihe.Namen" - Attribut entspricht der Zeile Namen. Da gibt es keinen Platz zum speichern der Namen der dimnames (Sie könnte ein zusätzliches Attribut für das natürlich, aber Sie nicht). Beim Aufruf derdimnames
- Funktion auf Daten.frame, es erstellt einfach eine Liste von "Zeile.Namen" und "Namen" - Attribute.Das Problem ist, dass Sie können nicht ändern die dimnames von
x
direkt für einige Grund, undx
gezwungen werden zu einer matrix, die nicht die Erhaltung namens dimnames.Einer Lösung zu zwingen, zu einer ersten matrix, dann nennen Sie die dimnames und verwenden Sie dann
apply()
FUN
angewendet wird. Ich stellte die Antwort als Erklärung, was meinen die mit Namen dimnames Stück von deinem Q.