【发布时间】:2011-09-09 20:45:03
【问题描述】:
这是我的问题,第一个数据帧是在一个函数内输出的,该函数将应用于更大的 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
我想用来自 dataframe2 的附加 afreq 变量制作新的数据帧,如 mydf。我试图对其进行子集化:
loctab[loctab$allele %in% mydf$qit, ]
vloc allele afreq
1 Loc1 13 0.308
2 Loc1 12 0.400
3 Loc2 27 0.041
5 Loc3 16 0.125
7 Loc4 14 0.139
9 Loc5 15 0.219
11 Loc6 21 0.176
13 Loc7 12 0.358
14 Loc7 14 0.400
15 Loc8 11 0.274
17 Loc9 8 0.173
我没有得到我想要的。这里的子集不关心 vloc 或 loc 变量。在此,只要它与 qit 中的所有值匹配,就会对其进行子集化。无论如何通过引用 loc 或 vloc 来进行子集化。
【问题讨论】: