8
votes

Comment obtenir le nom d'une donnée.frame dans une liste?

Comment puis-je obtenir le nom d'un cadre de données dans une liste? Bien sûr, get () code> obtient l'objet lui-même, mais je veux avoir son nom pour une utilisation dans une autre fonction. Voici le cas d'utilisation, au cas où vous préféreriez suggérer un travail autour de: xxx pré>

Il existe une colonne dans chaque cadre de données qui passe par le même nom que la trame de données dans la liste. Comment puis-je obtenir ce nom bynameofx code>? noms (x) code> retournerait tout le vecteur. P>

Edit: Voici un exemple reproductible: P>

df1 <- data.frame(value = rnorm(100), cat = c(rep(1,50),
    rep(2,50)), idx = rep(letters[1:4],25))
df2 <- data.frame(value = rnorm(100,8), cat2 = c(rep(1,50), 
    rep(2,50)), idx = rep(letters[1:4],25))

mylist <- list(cat = df1, cat2 = df2)
lapply(mylist, head, 5)


0 commentaires

3 Réponses :


6
votes

J'utiliserais les noms de la liste dans cette mode:

l <- lapply(names(mylist), function(x) {
ddply(mylist[[x]], c("idx", x), summarise,checkSum = sum(value))
})
names(l) <- names(mylist); l


2 commentaires

llply (myList, .Fun = ddply, c (2,3), résumée, checksum = somme (valeur)) fonctionne aussi bien, mais peut être plus déroutant


@ Ran2 Je ne pense pas que les noms à utiliser varient de la liste à la liste.



1
votes

Vous pouvez simplement utiliser des noms (liste) -> list_name, puis utiliser list_name [1], list_name [2], etc. Pour obtenir le nom de chaque liste. (Vous pouvez également avoir besoin comme.numérique (list_name [x]) si les noms de liste sont des numéros.


1 commentaires

Cela ne fonctionne pas à moins que la liste n'avait les noms donnés en premier lieu



3
votes

Voici l'équivalent dplyr xxx


0 commentaires