R 基于其他向量的数据帧子集

R 基于其他向量的数据帧子集,r,dataframe,subset,R,Dataframe,Subset,我的问题是,第一个数据帧是在一个函数中输出的,该函数将应用于更大的dataframe2,以将其子集 # dataframe1 loc <- c(paste('Loc', 1:9, sep = '')) qit <- c(13, 27, 16, 14, 15, 21, 12, 11, 8) mydf <- data.frame(loc, qit) loc qit 1 Loc1 13 2 Loc2 27 3 Loc3 16 4 Loc4 14 5 Loc5

我的问题是,第一个数据帧是在一个函数中输出的,该函数将应用于更大的dataframe2,以将其子集

# dataframe1 
loc <- c(paste('Loc', 1:9, sep = ''))
qit <- c(13, 27, 16,  14,  15,  21,  12,  11,  8)

mydf <- data.frame(loc, qit)
 loc qit
1 Loc1  13
2 Loc2  27
3 Loc3  16
4 Loc4  14
5 Loc5  15
6 Loc6  21
7 Loc7  12
8 Loc8  11
9 Loc9   8

#dataframe 2
loc <- c(paste('Loc', 1:9, sep = ''))
 vloc <- c(rep(loc, each=2))
 allele <- c(
  13, 12, 27, 20, 16, 18, 
  14, 17, 15, 22, 21, 26, 
  12, 14, 11, 18,  8, 24
  )
  afreq <- c( 0.308, 0.4, 0.041, 0.5, 0.125, 0.5,
             0.139, 0.2, 0.219, 0.2,0.176, 0.33,
             0.358, 0.4, 0.274, 0.5, 0.173, 0.15)   
 loctab <- data.frame(vloc, allele, afreq)

   vloc allele afreq
1  Loc1     13 0.308
2  Loc1     12 0.400
3  Loc2     27 0.041
4  Loc2     20 0.500
5  Loc3     16 0.125
6  Loc3     18 0.500
7  Loc4     14 0.139
8  Loc4     17 0.200
9  Loc5     15 0.219
10 Loc5     22 0.200
11 Loc6     21 0.176
12 Loc6     26 0.330
13 Loc7     12 0.358
14 Loc7     14 0.400
15 Loc8     11 0.274
16 Loc8     18 0.500
17 Loc9      8 0.173
18 Loc9     24 0.150
我没有得到我想要的。这里子集不关心vloc或loc变量。在这种情况下,每当它获得qit中所有值的匹配项时,它都会将其子集。是否存在通过引用loc或vloc来进行子集划分

也许您正在寻找的是
merge()
函数:

mydf2 <- merge(mydf,loctab,by.x = "qit", by.y = "allele")
mydf2也许您正在寻找的是
merge()
函数:

mydf2 <- merge(mydf,loctab,by.x = "qit", by.y = "allele")
mydf2