R:如何从三列的所有可能组合生成数据帧?

时间:2017-03-24 09:44:56

标签: combinations permutation

我有以下数据框:

df1 <- data.frame(x1=c(1,2,3,4), x2=c(10,20,30,40), x3=c(100,200,300,400))  

我希望生成可以通过在不同的顺序中合并d1$x1df1$x2df1$x3来创建的可能数据框,以便4^3个不同的数据框,例如:

 x1 x2 x3   
1  1  10 100  
2  2  20 200  
3  3  30 300  
4  4  40 400`  

   x1 x2 x3 
1  1  40  400  
2  2  30  300  
3  3  20  200  
4  4  10  100  

等等。对于他们每个人,我想计算以下函数:

my.function <- function(x1, x2, x3) { 
  sum(0.3*x1^2+0.3*x2^2+0.4*x3)/nrow(x1)
}

我这样做了,但这显然是错的:

res1 <- rep(NA, nrow(df1)^3)
for(i in 1:nrow(df1)){
  for(j in 1:nrow(df1)){
    for(k in 1:nrow(df1)){
      x1.1 <- as.vector(c(df1[-i, 1], df1[i, 1]))
      x2.1 <- as.vector(c(df1[-k, 2], df1[k, 2]))
      x3.1 <- as.vector(c(df1[-j, 3], df1[j, 3]))
      res1[nrow(df1)^2*(i-1) + nrow(df1)*(j-1)+k] <- m.function(x1.1, x2.1, x3.1)
    }
  }
}  

我试图找到一个类似我的问题而没有太多运气,你能帮我吗? 非常感谢你!!!

0 个答案:

没有答案