J'ai trois ou plusieurs variables indépendantes représentées en tant que vecteurs R, comme ceci:trame de données produit cartésien R
A <- c(1,2,3)
B <- factor(c('x','y'))
C <- c(0.1,0.5)
et je veux prendre le produit cartésien de tous et mettre le résultat en données cadre, comme ceci:
A B C
1 x 0.1
1 x 0.5
1 y 0.1
1 y 0.5
2 x 0.1
2 x 0.5
2 y 0.1
2 y 0.5
3 x 0.1
3 x 0.5
3 y 0.1
3 y 0.5
je peux le faire en écrivant manuellement les appels à rep
:
d <- data.frame(A = rep(A, times=length(B)*length(C)),
B = rep(B, times=length(A), each=length(C)),
C = rep(C, each=length(A)*length(B))
mais il doit y avoir une façon plus élégante de le faire, oui? product
dans itertools
fait partie du travail, mais je ne trouve aucun moyen d'absorber la sortie d'un itérateur et de le mettre dans une trame de données. Aucune suggestion?
p.s. L'étape suivante dans ce calcul ressemble
d$D <- f(d$A, d$B, d$C)
donc si vous connaissez un moyen de faire les deux étapes à la fois, ce serait aussi utile.
il serait utile si vous spécifiez ce que fait la fonction f. – Ramnath
'f' est un espace réservé pour l'un des différents calculs mathématiques poilus, mais pour les besoins de cette question, je * pense * la chose que vous devez savoir est qu'ils prennent tous N vecteurs de type approprié et produisent un vecteur; toutes les entrées doivent avoir la même longueur, et la sortie est aussi cette longueur. – zwol
Je recommanderais de changer le titre de cette question ... "table de données" signifie maintenant quelque chose de différent dans R. –