r - 计算分数的函数
问题描述
根据得分矩阵计算序列得分。
sum(j[k])
j <- matrix(1:25, ncol = 5, nrow = 5)
diag(j) <- 0
j
n <- 1:5
k <- sample(n, 5, replace = FALSE)
k <- replicate(5, sample(n, 5, replace = FALSE))
j 是得分矩阵。k 是序列类型矩阵。
lets say k[1,] = 4 1 5 3 2
k[2,] = 2 5 4 2 4
解决方法:请帮忙回答两个问题;
问题一:
向矩阵 k 添加一列(我们称之为“分数”)。基于 J 矩阵,该序列的得分应为 48。
4 1 5 3 2 48
问题 2:
k[2,] = 2 5 4 2 4
样本函数产生了错误的排列。我不希望序列中有任何重复。这里重复4。其次,缺少 1。有没有其他最好的方法来生成随机排列。
解决方案
你最好仔细检查一下结果。如果没有您最终的可重现示例,则很难确认这些值。
set.seed(1)
k <- replicate(5, sample(5))
# each column is a random permutation of 1:5
k
# [,1] [,2] [,3] [,4] [,5]
# [1,] 2 5 2 3 5
# [2,] 5 4 1 5 1
# [3,] 4 2 3 4 2
# [4,] 3 3 4 1 4
# [5,] 1 1 5 2 3
j <- matrix(1:25, 5)
diag(j) <- 0
nr <- nrow(k)
# arrange successive values as a column pair
ix <- cbind(c(k[-nr,]), c(k[-1,]))
# use the column pair to reference indices in j
jx <- j[ix]
# arrange j-values into a matrix and sum by column, producing the scores
scores <- colSums(matrix(jx, nr-1))
cbind(t(k), scores)
# scores
# [1,] 2 5 4 3 1 59
# [2,] 5 4 2 3 1 44
# [3,] 2 1 3 4 5 55
# [4,] 3 5 4 1 2 53
# [5,] 5 1 2 4 3 42
推荐阅读
- powershell - 如何在同一时间添加两个 true while?
- python - 在 Mac OS 10.14.2 上的 Python 3.7 中安装 JPype1 时出错
- c++ - 在类构造函数中,定义一个 T 类型的向量
- vba - 如何使用 Word VBA 在句子中插入 PRINTDATE 域代码?
- excel - 创建代码以读取动画图中的多组系列数据
- opendaylight - OpenDaylight 原型 JAR 氟不在存储库中?
- jquery - ajax 正在重定向到操作页面,而不是在同一页面中显示错误
- javascript - 匹配链接中的页码
- python - 即使单词中有元音,我的代码也会返回 False
- c++ - 给出前半部分在 C++ 中创建回文的好方法