删除值

时间:2015-07-07 02:49:38

标签: r matrix

我正在尝试使用从here改编的以下代码将相关矩阵的值打印为有序列表。有人可以解释如何仅从相关矩阵的下半部分获得输出,并让它显示行名和列名而不是colN吗?

set.seed(1)
df <- data.frame(
    col1 = rnorm(10),
    col2 = rnorm(10),
    col3=rnorm(10)
)
row.names(df)<-c("A","B","C","D","E","F","G","H","I","J")

cors<-cor(df)
library(reshape)
x <- subset(melt(cors), value != 1 | value != NA)
x <- x[with(x, order(-abs(x$value))),]
#x$value<-signif(x$value,2)
head(x)

我希望的例子:

row names col names  corr vales
col3      col2        0.60
col2      col1       -0.38
col3      col1       -0.72

1 个答案:

答案 0 :(得分:1)

使用lower.tri索引数据。

cors <- cor(df)
as.data.frame.table(cors)[lower.tri(cors),]

#  Var1 Var2       Freq
#2 col2 col1 -0.3767034
#3 col3 col1 -0.7158385
#6 col3 col2  0.6040273

如果您必须更改名称,请将其全部包装在setNames()

setNames(as.data.frame.table(cors)[lower.tri(cors),], c("row","col","corr"))