2012-11-14 100 views
1

我有一个任务是将一组给定的数据作为矩阵发布,我已经完成了这个任务。在R中处理矩阵

现在,我已经有了列和行名称的矩阵,我需要检查矩阵中条目的绝对值是否大于0.5。如果是这种情况,则需要打印此特定值以及列和行的名称。

此外,所讨论的矩阵是对称的,并且其对角线的值等于1,所以这些不必被打印。

你有什么想法如何实现它?我应该将这些结果放在矩阵中还是数据框中?哪两个更容易实现?

+3

你尝试过什么?另外,请发布[可重现的示例](http://stackoverflow.com/questions/5963269/how-to-make-a-great-r-reproducible-example)。 –

回答

0

一个例子:

set.seed(101) 
x <- matrix(rnorm(100),10) 
xx <- cor(x) # correlation matrix 
rownames(xx) <- colnames(xx) <- letters[1:10] 

找到感兴趣的组合(| R |> 0.5):

combinations <- levels(interaction(rownames(xx), colnames(xx))) 
idx <- abs(xx) > 0.5 
diag(idx) <- idx[upper.tri(idx)] <- FALSE 
results <- data.frame(combination = combinations[idx], rho = xx[idx]) 

# combination  rho 
# 1   d.a -0.5739332 
# 2   e.a 0.6352977 
# 3   f.c 0.5977269 
# 4   h.g -0.8208542