Comment appliquer la fonction renvoyant data.frames avec des facteurs à séquencer
Comment puis-je appliquer une fonction qui retourne un ensemble de données.cadre avec des facteurs de séquence?
Exemple:
s <- factor(c(10, 20, 30))
t <- factor(c("a", "b", "a"))
v <- c(5, 6, 4)
df <- data.frame(s,t,v)
De sorte que les données.châssis df est ceci:
s t v
1 10 a 5
2 20 b 6
3 30 a 4
Moi aussi j'ai une fonction qui retourne un ensemble de données.cadre:
simpleFunc2 <- function(df, x){
tmp <- subset(df, df$s == x)
return(tmp)
}
Maintenant, j'ai une séquence
x <- c(20, 30, 10, 30, 10)
et souhaitez le résultat auf l'application de la fonction simpleFunc2 à cette séquence.
- Je utiliser sapply
sapply(x, function(x) simpleFunc2(df, x))
Mais je reçois
[,1] [,2] [,3] [,4] [,5]
s factor,1 factor,1 factor,1 factor,1 factor,1
t factor,1 factor,1 factor,1 factor,1 factor,1
v 6 4 5 4 5
Comment puis-je obtenir les bonnes valeurs des facteurs de retour?
Cet exemple est simplifié. Alors peut-être il ya un moyen beaucoup plus simple de le faire dans ce cas.
source d'informationauteur JerryWho
Vous devez vous connecter pour publier un commentaire.
Essayer
lapply
plutôt avecdo.call
comme dans:Je vois que vous avez obtenu une réponse à votre question, mais je pense que votre approche de la sélection du sur-ensemble de celui dataframe était trop impliqué. (Et toutes mes excuses si cette fonction n'était pas représentatif. Je tiens à offrir une méthode d'extraction qui est plus rapide que de passer par
subset
:Je ne comprends pas très bien la question, mais les deux réponses suggèrent qu'au moins une méthode simple a été absent pendant tout ce temps. Il est souvent commode de type
pour obtenir un classement de sortie avec le bouton droit de la ligne/colonne des noms
En termes de performances, la méthode proposée ne peut pas rivaliser avec la méthode employant "match" mais bat facilement la méthode de la accepté de répondre.
.