使用for循环R创建变量本身的组合列表

时间:2018-07-03 17:04:00

标签: r

Year=c(1936, 1946, 1951, 1963, 1975, 1997, 2006)
decform <- function(var){
mat <- matrix(nrow=21,ncol=2)
n<-1
m<-2
 for (i in var[(1:(length(var)-1))]){
   for (j in var[(m:(length(var)))]){
     mat[n,] <- c(i,j)
    }
      m <- m+1
      n <- n+1

  }
return(mat)
}


decform(Year)

这是我的R代码,用于创建一个具有21行的2列矩阵,该矩阵对应于可能的组合数量,而无需重复执行,但是输出不正确。有什么不对?使用代码,我需要使用两个嵌套的for循环来完成此操作。

1 个答案:

答案 0 :(得分:0)

您的解决方案非常接近,您只需要将行迭代器(在我的示例中为p,在您的示例中为n)移至第二个循环,而不是第一个循环:< / p>

Year <- c(1936, 1946, 1951, 1963, 1975, 1997, 2006)
mat <- matrix(0, nrow = 21, ncol = 2)

p <- 1 # row iterator
q <- 2 # second column iterator

for(i in 1:(length(Year) - 1)){ # first loop 

  for(j in q:length(Year)){ # second (nested loop)

    mat[p,] <- c(Year[i], Year[j])
    p <- p + 1 # iterate rows

  }

  q <- q + 1 # iterate second column

}

mat
#      [,1] [,2]
# [1,] 1936 1946
# [2,] 1936 1951
# [3,] 1936 1963
# [4,] 1936 1975
# [5,] 1936 1997
# ....