如何打印循环导致R中的上三angularmatrix

R中的脚本如下。

for (i in 1:(ncol(K)-1)) #ncol=7,K is dataset for (j in i:ncol(K)){ print(mi.empirical(rbind(K[, i],K[,j]))) } 

输出是给定的

 [1] 0 [1] 0.1412579 [1] 0.4597332 [1] 0.382798 [1] 0.1162086 [1] 0.3379114 [1] 0.4848073 [1] 0 [1] 0.3103481 [1] 0.1556235 [1] 0.02243661 [1] 0.123117 [1] 0.2290079 [1] 0 [1] 0.1460452 [1] 0.3638203 [1] 0.2569532 [1] 0.1117262 [1] 0 [1] 0.1981758 [1] 0.05325737 [1] 0.03590259 [1] 0 [1] 0.1380921 [1] 0.3007399 [1] 0 [1] 0.1032283 

有人可以告诉我如何打印这个结果在一个上三angularmatrix(7×7matrix)? 全零(0)在对angular线上。 请帮帮我。

提前感谢你。

如果您只是想将结果打印为matrix,则使用这个虚拟数据

 n <- 7 vec <- seq_len((0.5 * (n * (n-1)) + n)) ## dummy data, *inc* diagonal 

这将起mi.empirical()的累积输出的作用,创build一个空matrix

 mat <- matrix(ncol = 7, nrow = 7) 

然后使用upper.tri(mat, diag = TRUE)mat的上三angular形进行索引,并将累积结果分配给它

 mat[upper.tri(mat, diag = TRUE)] <- vec > mat [,1] [,2] [,3] [,4] [,5] [,6] [,7] [1,] 1 2 4 7 11 16 22 [2,] NA 3 5 8 12 17 23 [3,] NA NA 6 9 13 18 24 [4,] NA NA NA 10 14 19 25 [5,] NA NA NA NA 15 20 26 [6,] NA NA NA NA NA 21 27 [7,] NA NA NA NA NA NA 28 

您将需要将mi.empirical()所有输出放入单个向量中,而不是打印每个中间结果。

upper.tri可能是你正在寻找的东西:

 #Generating a reproducible 7x7 matrix: set.seed(1) m <- matrix(rexp(49, rate=.1), ncol=7) diag(m) <- rep(0, ncol(m)) #The calculation you're looking for: m[upper.tri(m, diag = FALSE)] 

你无论如何循环指数,你也可以填写一个matrix,而你正在做的。

例如:

 answers <- matrix(NA_character_, nrow=ncol(K) - 1, ncol=ncol(K)) for (i in 1:(ncol(K)-1)) for (j in i:ncol(K)){ answers[i, j] <- mi.empirical(rbind(K[, i],K[,j])) } print(answers)