Hier die mylist
ist nicht in der richtigen Art und Weise erstellt und ein list
ist auch nicht erforderlich, da data.frame
ein list
mit Spalten gleich lang ist. Also, Teilmenge nur die Spalten von Interesse und anwenden, um die Funktion
lapply(Fair[c("occupation", "education")], x1)
In dem Code des OP erstellt as.list
einfach ein list
von length
601 mit nur einem einzigen Elemente in jedem.
str(mylist)
#List of 601
#$ : int 7
#$ : int 6
#$ : int 1
#...
#...
Ein weiteres Problem im Code ist, dass es nicht einmal das zweite Argument berücksichtigt. Mit einem einfachen Beispiel
as.list(1:3, 1:2)
#[[1]]
#[1] 1
#[[2]]
#[1] 2
#[[3]]
#[1] 3
Das zweite Argument wird überhaupt nicht berücksichtigt. Es hätte
gewesen
list(1:3, 1:2)
#[[1]]
#[1] 1 2 3
#[[2]]
#[1] 1 2
Aber für data.frame Spalten, wir brauchen nicht explizit die list
nennen, da es ein list
von vectors
ist, die gleiche Länge haben.
In Bezug auf den Fehler in der OP Post, funktioniert mean
auf vector
s und nicht auf list
oder data.frame
.
Bitte überprüfen Sie die 'str' von' Mylist'. Wenn es eine "Liste" ist, durchlaufen Sie die Listenelemente und wenden Sie die Funktion an, dh. 'lapply (mylist, x1)' Außerdem denke ich, dass 'as.list' nicht das tut, was Sie beabsichtigt haben, da es sich in eine' liste' der Länge 601 mit je 1 Element aufteilt. Vielleicht brauchen Sie nur 'lapply (Fair [c (" Beruf "," Bildung "), x1)' – akrun