2010-07-29 4 views
1

j'ai cetteajouter une trame de données à un nom construit

pour (i à 1:10)

et à l'intérieur, j'ai une trame de données: par exemple

df<-1:100 

et je veux attribuer le dataframe à un nom spécifique que je veux créer

quelque chose comme: (pas que ça marche)

paste("name", variable[i])<- df 

Edit:

Comment puis-je ensuite accéder à ces valeurs construites dans une autre boucle (en supposant que j'ai utilisé assign)

datalist <- paste("a",1:100,sep="") 
    for (i in 1:length(datalist)){ 

} 

Répondre

7

Je propose assign, comme illustré ici:

for(i in 1:100){ 
    df <- data.frame(x = rnorm(10),y = rpois(10,10)) 
    assign(paste('df',i,sep=''),df) 
} 
+0

Savez-vous comment je pourrais accéder aux valeurs assignées dans une autre boucle? –

+1

@Nathaniel 'get (paste ('df', i, sep = ''))' Mais si vous en avez besoin, vous pouvez utiliser list à la place. 'list_of_df <- lapply (1: 100, function (i) data.frame (...))' et ensuite dans une autre boucle/lapply utilise 'list_of_df [[i]]'. – Marek

+0

@Marek oh cool, merci! –

0

Vous pouvez stocker la sortie de la boucle dans une liste:

set.seed(10) 
x = list() 

for(i in 1:10){ 
    x[[i]] <- data.frame(x = rnorm(100), y = rnorm(100)) 
    } 

Alors x sera une liste de longueur 10 et chaque élément de la liste sera de dim c (100, 2)

> length(x) 
[1] 10 
> dim(x[[1]]) 
[1] 100 2 
> 

Bien sûr, vous pouvez aussi nommer les éléments de la liste:

names(x) = letters[1:10] 

x[["a"]] 


       x   y 
1 0.01874617 -0.76180434 
2 -0.18425254 0.41937541 
3 -1.37133055 -1.03994336 
4 -0.59916772 0.71157397 
5 0.29454513 -0.63321301 
6 0.38979430 0.56317466 
... 
Questions connexes