создание списка комбинации переменных раз сам с использованием цикла for R - PullRequest
0 голосов
/ 03 июля 2018
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 для создания матрицы из 2 столбцов с 21 строкой, которая соответствует числу возможных комбинаций без повторения, которое могло бы быть сделано, но вывод неправильный. Что-то не так? Для этого мне нужно использовать два вложенных цикла for.

1 Ответ

0 голосов
/ 03 июля 2018

Ваше решение очень близко, вам просто нужно переместить итератор строки (в моем примере это p, в вашем примере это n) во второй цикл вместо первого цикла:

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
# ....
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...