r - 如何在 R 中生成特定的设计矩阵?
问题描述
我想创建一个用于 glmnet 函数的设计矩阵。我的预测指标是球员姓名;当玩家i与玩家j进行比赛时,我希望该比赛的行在i列中具有 +1,在j列中具有 -1 。
例如,如果有三个玩家都互相玩,那么设计矩阵应该如下:
1 -1 0
1 0 -1
0 1 -1
我试过使用 model.matrix 但我不确定如何创建这个特定的设计矩阵 - 或者如果这个矩阵有更好的格式也有助于了解!
解决方案
尝试这个:
num_players <- 4
matches <- t(combn(num_players, 2))
nr <- nrow(matches)
mtx <- matrix(0L, nrow = nr, ncol = num_players)
mtx[ cbind(seq_len(nr), matches[,1]) ] <- 1L
mtx[ cbind(seq_len(nr), matches[,2]) ] <- -1L
mtx
# [,1] [,2] [,3] [,4]
# [1,] 1 -1 0 0
# [2,] 1 0 -1 0
# [3,] 1 0 0 -1
# [4,] 0 1 -1 0
# [5,] 0 1 0 -1
# [6,] 0 0 1 -1
推荐阅读
- python - 如何让scrapy spider从起始网址下载图片?
- r - 在带有 na 的列上使用 cor.test()
- php - 如何解决 WordPress 插件中的命名空间冲突?
- ssh - 为什么通过 SSH 和 libssh 执行命令时 $PATH 不同?
- linux - 如何在 Jenkins 管道/Linux 中使用以下命令
- json - 如何使用powershell从json中获取值
- algorithm - 这是线性算法还是常数算法,为什么?
- javascript - 不能在 Vuex 中分配突变
- flutter - 如何在 Flutter 上复制(这个)特定的 Android 约束布局
- c++ - 深度优先搜索找到最短路径c ++