我有三個或更多的自變量表示爲R矢量,像這樣:笛卡爾乘積數據幀
A <- c(1,2,3)
B <- factor(c('x','y'))
C <- c(0.1,0.5)
和我想利用它們的所有的笛卡爾乘積,並把該結果到數據幀,這樣的:
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))
但是必須有一個更優雅的方式來做到這一點,是的? product
itertools
做了部分工作,但我找不到任何方式來吸收迭代器的輸出並將其放入數據框。有什麼建議麼?
p.s.在這個計算中的下一個步驟看起來像
d$D <- f(d$A, d$B, d$C)
所以如果你知道一種方法同時做兩個步驟,這也將是有益的。
如果你指定了函數f所做的工作,它將會很有用。 – Ramnath 2010-11-30 00:07:00
`f`是一個佔位符,用於幾個不同的多毛數學計算之一,但爲了這個問題的目的,我認爲*你需要知道的是他們都需要N個適當類型的向量併產生一個向量;所有的輸入必須是相同的長度,輸出也是這個長度。 – zwol 2010-11-30 00:10:05
我建議改變這個問題的標題......「數據表」現在意味着R中的不同。 – 2015-11-11 14:44:18