我遇到这样的情况:
DF1:
"G1" "G2" SEP11 ABCC1 214223_at ADAM19 COPS4 BIK ACE ALG3 EMP3 GGH
DF2
"S1" "S2" SEP11 0.1858 ADAM19 0.131 COPS4 0.1143 ACE 0.119 GGH 0.1214
我想得到以下输出:
"G1" "S2" "G2" "S2" SEP11 0.1858 ADAM19 0.131 COPS4 0.1143 GGH 0.1214 ACE 0.119
对于DF1的第一列,我尝试了以下代码:
DF1 = read.delim("...", header = T)
DF2 = read.delim("...", header = T)
INT = intersect(DF1$G1, DF2$S1)
dx = DF2$S1 %in% int
out = DF2[idx]
write.table(...)
现在,我想对DF1的一列使用简单代码的“逻辑”,对于DF1的所有列,而不是一个接一个地为了获得所需的输出。 怎么做到这一点?还有另一种最简单的方法吗? 非常感谢提前!
答案 0 :(得分:1)
此命令返回数据框列表,每列DF1
:
lapply(DF1, function(x) DF2[na.omit(match(DF2[[1]], x)), ])
$G1
S1 S2
1 SEP11 0.1858
3 COPS4 0.1143
4 ACE 0.1190
$G2
S1 S2
2 ADAM19 0.1310
5 GGH 0.1214