[英]Filter p-values from correlation matrix w/o losing rownames an colnames
I need to essentially accomplish this , except with a matrix of p-values. 除了使用p值矩阵外,我基本上需要完成此操作 。 I just don't know how to retain the row and column names:
我只是不知道如何保留行名和列名:
# 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
The as.data.frame.table function can convert matrices to long-form dataframes: as.data.frame.table函数可以将矩阵转换为长格式的数据帧:
Then you can select with [.data.frame
: 然后,您可以使用
[.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
If you need just as data visualization 如果您只需要数据可视化
faux.data[faux.data < 0.05] <- ""
Otherwise 除此以外
faux.data[faux.data < 0.05] <- NA
You can also visualize significant p-values by means of heatmaps with your raw data ( see this other SO question ) 您还可以通过带有原始数据的热图来可视化重要的p值( 请参阅另一个SO问题 )
library(pheatmap)
pheatmap(faux.data, cluster_rows = F, cluster_cols = F,
color = c("grey80", "deepskyblue4"),
breaks = c(0, 0.05, 1), cex=1.2)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.