library(magrittr)

p.combination = character(1000)
for(i in 1:length(p.combination)){
  p.combination[i] = LETTERS[sample(1:26,5)] %>% paste0(collapse = ", ")
}

p.com.allowed = character(1000)
for(i in 1:length(p.com.allowed)){
  p.com.allowed[i] = LETTERS[sample(1:26,5)] %>% paste0(collapse = ", ")
}

data = data.frame(p.combination = p.combination, 
                  p.com.allowed = p.com.allowed)
player = LETTERS[1:26]



input.matrix0 = function(data, player, off){
  X = matrix(ncol = length(player), nrow = dim(data)[1])
  for(i in 1:dim(data)[1]){
    if(off) {
      colnames(X) = paste0("O_",player)
      coding = 1
      pp = data$p.combination
    } else {
      colnames(X) = paste0("D_",player)
      coding = -1
      pp = data$p.com.allowed
    }
    player.temp = pp[i] %>% gsub(", ", "|",.)
    index = grep(player.temp, player)
    X[i,index] = coding
    X[i,-index] = 0
  }
  return(X)
}

input.matrix = function(data, player){
  X.off = input.matrix0(data, player, T)
  X.def = input.matrix0(data, player, F)
  return(cbind(X.off, X.def))
}




out = input.matrix(data,player)