【发布时间】:2016-06-01 19:50:59
【问题描述】:
我正在尝试遍历矩阵中的每一行,找到具有最小值的列和列名,然后在使用该列后删除该列,以便计算新的最小值。正确答案应该是这样的:
result
1/1 50
2/2 61
3/3 72
4/4 83
Test_Matrix <- matrix(c(50:149), ncol = 10 , byrow=FALSE)
Names <- c(1:10)
colnames(Test_Matrix) <- Names
rownames(Test_Matrix) <- Names
result <- t(sapply(seq(nrow(Test_Matrix)), function(i) {
j <- which.min(Test_Matrix[i,])
c(paste(rownames(Test_Matrix)[i], colnames(Test_Matrix)[j], sep='/'), Test_Matrix[i,j])
drops <- colnames(Test_Matrix)[j]
Test_Matrix[ , !(names(Test_Matrix) %in% drops)]
}))
result
第二个问题是我想在迭代期间选择行的顺序,以便它选择转到与列名同名的下一行。例如,如果最小值的列名为 5,则将删除第 5 列,然后计算名为 5 的行的最小值。
想知道这是否可行,以及这些计算是否需要循环。
作为新的 R 用户,我感谢任何帮助。 谢谢!
【问题讨论】: