我有一个非常棘手的问题。我有两个这样的data.frame:
data.frame_1(600列和100行):
COL1 COL2 COL3 ... ab e jh ... gb if ki ... uc kg al ... id mn ef1 ...
和data.frame2(900列和1000行)
Gene Samp1 Samp2 Samp3 ab 1 0 0 gb 1 1 1 uc 0 -1 1 id -1 -1 1 e 1 0 -1 f -1 1 -1 if 1 1 0 kg 0 1 -1 mn -1 0 1 jh -1 -1 -1 ki 0 -1 0 al 0 1 -1
我想要以下输出:
COL1 Samp1 Samp2 Samp3 ab 1 0 0 gb 1 1 1 uc 0 -1 1 id -1 -1 1 COL2 Samp1 Samp2 Samp3 e 1 0 -1 f -1 1 -1 if 1 1 0 kg 0 1 -1
因此,对于每一列data.frame_1,我需要与data.frame_2的第一列匹配和子集 然后每个匹配将保存在不同的单独文件中。
有人能帮帮我吗?
提前多多感谢!
答案 0 :(得分:3)
这很简单,实际上是:
dat1 <- read.table(text = "COL1 COL2 COL3
ab e jh
gb if ki
uc kg al
id mn ef1 ",header = TRUE,sep = "")
dat2 <- read.table(text= "Gene Samp1 Samp2 Samp3
ab 1 0 0
gb 1 1 1
uc 0 -1 1
id -1 -1 1
e 1 0 -1
f -1 1 -1
if 1 1 0
kg 0 1 -1
mn -1 0 1
jh -1 -1 -1
ki 0 -1 0
al 0 1 -1",header = TRUE,sep = "")
lapply(dat1,function(x) dat2[dat2$Gene %in% x,])
然后你有一个包含结果的数据框列表。只需lapply
就可以将每个文件保存到一个单独的文件中(假设您真的希望每个文件都在磁盘上的文件中)。