最佳答案
我有三个或更多的独立变量表示为 R 向量,像这样:
A <- c(1,2,3)
B <- factor(c('x','y'))
C <- c(0.1,0.5)
and I want to take the Cartesian product of all of them and put the result into a data frame, like this:
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
我可以通过手动写出对 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))
但肯定有更优雅的方式,对吧?itertools
中的 product
完成了部分工作,但我找不到任何方法来吸收迭代器的输出并将其放入数据框架中。有什么建议吗?
另外,这个计算的下一步看起来像
d$D <- f(d$A, d$B, d$C)
so if you know a way to do both steps at once, that would also be helpful.