r - R中使用预定义名称列表的数据框子集
问题描述
我有一个名为“COMBO_mk_plt_genes_labels”的基因名称列表和一个名为“Marker_genes_41POS_12_libraries_test_1”的标记基因数据框,其中包含基因和折叠变化。
我想提取 COMBO_mk_plt_genes_labels 的名称。
我知道which()
R 中的函数会得到基因的位置。请参阅下面的示例。如何提取名称而不仅仅是位置?
print(head(Marker_genes_41POS_12_libraries_test_1))
p_val avg_logFC pct.1 pct.2 p_val_adj
HBD 6.610971e-108 3.3357135 0.930 0.080 2.419682e-103
GP1BB 1.332211e-91 2.5397301 0.825 0.047 4.876024e-87
CMTM5 1.938091e-63 2.0580724 0.605 0.005 7.093606e-59
SH3BGRL3 1.067771e-60 1.3750032 0.975 0.592 3.908149e-56
PF4 1.899932e-60 3.0111590 0.371 0.000 6.953941e-56
FTH1 4.242081e-58 0.8947325 0.996 0.905 1.552644e-53
COMBO_mk_plt_genes=read.csv(file = "combined_Mk_Plt_genes_list.csv", row.names = ,1)
COMBO_mk_plt_genes_labels=COMBO_mk_plt_genes[,1]
print(head(COMBO_mk_plt_genes_labels))
[1]“CMTM5”“GP9”“CLEC1B”“LTBP1”“C12orf39”“CAMK1”
PLT_genes_in_dataframe= which(rownames(Marker_genes_41POS_12_libraries_test_1) %in% COMBO_mk_plt_genes_labels)
print(PLT_genes_in_dataframe)
[1] 2 3 5 8 11 12 13 20 22 23 24 27 32 38 39 42
[17] 48 60 61 66 68 75 77 92 93 108 112 145 158 175 188 196
[33] 203 214 236 253 261 307 308 1004 1017
我想要元素的名称而不是位置。任何建议表示赞赏。
解决方案
您可以使用基础intersect()
:
intersect(rownames(Marker_genes_41POS_12_libraries_test_1), COMBO_mk_plt_genes_labels)
intersect()
输出在两个项目序列之间匹配的项目。
运行?intersect()
或?base::intersect()
了解更多信息。
替代解决方案:使用您的which()
方法获取元素名称
您仍然可以使用which()
来查找项目或元素名称。知道你的which()
函数提供了rownames(Marker_genes_41POS_12_libraries_test_1)
匹配COMBO_mk_plt_genes_labels
的 rownames(Marker_genes_41POS_12_libraries_test_1)
索引号,你可以使用这些索引号来调用rownames(Marker_genes_41POS_12_libraries_test_1)
匹配的元素名称。
rownames(Marker_genes_41POS_12_libraries_test_1)[which(rownames(Marker_genes_41POS_12_libraries_test_1) %in% COMBO_mk_plt_genes_labels)]
# or in short
rownames(Marker_genes_41POS_12_libraries_test_1)[PLT_genes_in_dataframe]
intersect()
不过,这是一种更简单的方法。
但是,您需要注意一个区别,那就是重复项目。
如果 rownames(...) (我们称之为x
)具有与第二个 items 序列中的项目匹配的重复项y
,intersect(x, y)
则不会为您提供任何重复项。相比之下,x[which(x %in% y)]
(即which()
方法)将为您提供与inx
匹配为 TRUE 的重复项。切换and ,您也可以使用. 您可以使用它来计算匹配的次数。y
x
x
y
y
y[which(y %in% x)]
推荐阅读
- regex - 在 Wordpress URL 重写规则中连接 $matches
- android - Ionic 5 + Angular + Capacitor + Motion 不会在真正的 Android 设备上触发监听器
- sql - 比较同一表中两列中的值并创建新列
- ios - 如何从 UIProgressView 中移除模糊效果/使 progressView 的背景完全透明?
- c++ - 将对象传递给 lambda std::thread (C++) 中的函数:尝试使用已删除的函数
- python - NameError:未定义名称“线程”将在终端中运行 Python 程序
- reactjs - React Leaflet:标记组件的自定义事件“onClick”
- c++ - 为什么新的 Visual Studio 将字符串文字作为指向常量的指针?
- php - PHP 将内容写入 javascript 脚本
- javascript - 如何使 am 数组不可变