Erster Code:wie der Datenrahmen mit sqldf Schleife?
Datenprobe:
vector1 <- data.frame("name"="a","age"=10,"gender"="m")
vector2 <- data.frame("name"="b","age"=33,"gender"="m")
vector3 <- data.frame("name"="b","age"=58,"gender"="f")
list <- list(vector1,vector2,vector3)
sql <- list()
for(i in 1:length(list)){
print(list[[1]]) # access dataframe
sql[[i]]<-
sqldf(paste0("select name,gender,count(name) from ",list[[i]]," group by gender "))
}
Wie Schleife der Datenrahmen korrekt mit sqldf Funktion? Ich habe versucht, Liste [[1]] oder Liste [1] in der Funktion sqldf, um den Test zu tun, aber es wird keine solche Tabelle oder Syntaxfehler zurückgegeben. In der Schleifenfunktion kann ich auf den Datenrahmen zugreifen. Ist es möglich, dieses Format zu verwenden?
print(str(list))
List of 3
$ :'data.frame': 1 obs. of 3 variables:
..$ name : Factor w/ 1 level "a": 1
..$ age : num 10
..$ gender: Factor w/ 1 level "m": 1
$ :'data.frame': 1 obs. of 3 variables:
..$ name : Factor w/ 1 level "b": 1
..$ age : num 33
..$ gender: Factor w/ 1 level "m": 1
$ :'data.frame': 1 obs. of 3 variables:
..$ name : Factor w/ 1 level "b": 1
..$ age : num 58
..$ gender: Factor w/ 1 level "f": 1
NULL
Zweitens:
Dieser Code ist meine Erwartung.
f<- lapply(list, function(dataframe) {
sql <-
sqldf("select name,gender,count(name) from dataframe group by gender ")
})
print(f)
Dies ist der Ausgang.
> print(f)
[[1]]
name gender count(name)
1 a m 1
[[2]]
name gender count(name)
1 b m 1
[[3]]
name gender count(name)
1 b f 1
Ist es möglich, den ersten Code zu verwenden, um auf die Liste zuzugreifen? Wie behebe ich es, wenn ich die Einfügefunktion verwenden möchte, um auf jeden Datenrahmen in einer Liste zuzugreifen.
danke für Ihren Unterricht. Es ist ein schneller Weg. – hahakwok