2013-03-27 5 views
0

Voici mon code actuelitération pour les boucles

dat= data.frame(a=1:10,b=1:10,c=1:10,d=1:10,e=1:10) 
for (i in 1:ncol(dat)) { 
    print(interaction(##...what to write here?*...##))} 

Ma boucle devrait faire la chose suivante

Première itération:

interaction(dat[,1],dat[,2]) 

deuxième itération:

interaction(dat[,1],dat[,2],dat[,3]) 

Troisième itération

interaction(dat[,1],dat[,2],dat[,3],dat[,4]) 

etc ...

Je ne me dérange pas vraiment si la fonction est interaction ou sum ou autre. C'est le principe simple de la première boucle. J'ai eu le même genre de problème avec aov (what to write here?) mais j'ai découvert le type de formule d'objet qui m'a permis d'écrire une formule en fonction de i (= l'objet itératif).

Merci.

+1

Je pense que cette question doit être clarifiée. Quelqu'un comprend-il assez bien pour l'étoffer? – Dinre

+2

Je suis encore plus confus maintenant. Votre question n'a rien à voir avec 'ggplot2'? – Arun

+0

En effet, je confondais tout le monde. Désolé pour ça ! J'ai tout changé de ma question y compris le titre. Maintenant, je pense que ce sera plus facile à comprendre. Ma question ne devrait pas être difficile, je suppose! –

Répondre

0

Si je comprends bien votre question, cela va vous aider à démarrer ... Dans un for loop:

for (i in 2:ncol(dat)) { 
    interaction(dat[,1:i]) 
} 

Vous pouvez également utiliser l'un de la famille apply:

lapply(2:ncol(dat), 
     function(x) interaction(dat[,1:x])) 

Mais vraiment , la meilleure réponse dépend de la façon dont vous prévoyez d'utiliser ces éléments.

+0

C'est exactement ce que je cherchais! Merci beaucoup Justin! –

+0

Oh, je vois que nous avons exactement la même seconde solution donc je vais supprimer le mien comme vous l'avez posté en premier. Mais je me demandais, pourquoi utilisez-vous 'do.call'? –

+1

parce que je n'ai pas testé ma réponse et je ne me souviens pas si 'interaction' a pris plusieurs colonnes. Si ce n'était pas le cas et que vous vouliez des arguments individuels, vous auriez besoin de 'do.call'. – Justin