从相关矩阵中过滤p值,而不会丢失行名和列名

时间:2018-11-05 23:33:50

标签: r

除了使用p值矩阵外,我基本上需要完成this。我只是不知道如何保留行名和列名:

# Makeup dataframe with p-values only
val_1 = as.numeric(c("2.858941e-02", "3.605727e-02"))
val_2 = as.numeric(c("0.09654", "3.482003e-02"))
val_3 = as.numeric(c("3.517555e-02", "0.07965"))
faux.data = data.frame(val_1, val_2, val_3, row.names = c("val_4", "val_5"))

> faux.data
           val_1      val_2      val_3
val_4 0.02858941 0.09654000 0.03517555
val_5 0.03605727 0.03482003 0.07965000


# Filter, but I lose the column an row names
filtered = faux.data[faux.data < 0.05]

> filtered
[1] 0.02858941 0.03605727 0.03482003 0.03517555

2 个答案:

答案 0 :(得分:1)

as.data.frame.table函数可以将矩阵转换为长格式的数据帧:

然后您可以使用[.data.frame进行选择:

tfaux <- as.data.frame.table(data.matrix(faux.data))

tfaux

   Var1  Var2       Freq
1 val_4 val_1 0.02858941
2 val_5 val_1 0.03605727
3 val_4 val_2 0.09654000
4 val_5 val_2 0.03482003
5 val_4 val_3 0.03517555
6 val_5 val_3 0.07965000

tfaux[ tfaux$Freq < 0.05,  ]

   Var1  Var2       Freq
1 val_4 val_1 0.02858941
2 val_5 val_1 0.03605727
4 val_5 val_2 0.03482003
5 val_4 val_3 0.03517555

答案 1 :(得分:0)

如果您只需要数据可视化

faux.data[faux.data < 0.05] <- "" 

否则

faux.data[faux.data < 0.05] <- NA

您还可以通过带有原始数据(see this other SO question)的热图来可视化重要的p值

library(pheatmap)
pheatmap(faux.data, cluster_rows = F, cluster_cols = F,
     color = c("grey80", "deepskyblue4"),
     breaks = c(0, 0.05, 1), cex=1.2)

enter image description here