Puis-je balayer une liste de tables pour obtenir des probabilités conditionnelles ou dois-je balayer chaque table individuellement? Voici quelques données que je viens d'inventer, de même que les sorties de la table, pour démontrer mon problèmeDivision d'éléments de table par sommes de colonnes pour plusieurs tables
positions <- c("forward", "midfield", "defence", "goalkeeper", rep("forward", 5), "defender")
nationality <- c(rep("IRE", 3), "GER", "ITA", "ENG", "FRA", "BRA", "SCO", "ESP")
teams <- c("Milan", "Juventus", "Lazio", "Palermo", "Milan", "Juventus", "Chievo", "Siena", "Parma", "Napoli")
dF <- data.frame(Team = factor(teams),
Position = factor(positions),
Nationality = factor(nationality),
stringsAsFactors = T)
t1 <- t(table(dF$Nationality, dF$Position))
t2 <- t(table(dF$Nationality, dF$Team))
BRA ENG ESP FRA GER IRE ITA SCO
defence 0 0 0 0 0 1 0 0
defender 0 0 1 0 0 0 0 0
forward 1 1 0 1 0 1 1 1
goalkeeper 0 0 0 0 1 0 0 0
midfield 0 0 0 0 0 1 0 0
BRA ENG ESP FRA GER IRE ITA SCO
Chievo 0 0 0 1 0 0 0 0
Juventus 0 1 0 0 0 1 0 0
Lazio 0 0 0 0 0 1 0 0
Milan 0 0 0 0 0 1 1 0
Napoli 0 0 1 0 0 0 0 0
Palermo 0 0 0 0 1 0 0 0
Parma 0 0 0 0 0 0 0 1
Siena 1 0 0 0 0 0 0 0
Ce que je dois faire est de diviser chaque entrée de table par la somme de la colonne afin d'obtenir des probabilités conditionnelles. Je sais que je peux utiliser la fonction de balayage appliquée à chaque table, mais je me demandais si elle peut être appliquée à une liste de tables via lapply ou par une boucle for? J'ai essayé les deux sans succès. J'ai également essayé la fonction de balayage sans succès.
Par exemple:
tbl_list <- list(t1, t2)
for(tbl in tbl_list) {
tbl <- sweep(tbl, 2, colSums(tbl), `/`)
}
Ça marche bien merci. Que se passe-t-il exactement avec les deux fonctions que vous avez définies ici? – Seanosapien