R 用另一个数据帧索引一个数据帧

R 用另一个数据帧索引一个数据帧,r,R,我有两个长的data.frame的子集: df1 <- data.frame("trial" = c('SA1','SA2','ES1','SA3','SA4','ES5'), "Genotype" = c('GID1','GID1','GID1','GID2','GID2','GID2')) df2 <- data.frame('GID1'= c('0','1'),'GID2'=c('1','0')) 请注意,data.frame非常大,我在%中尝试了match和%等函数,但没有

我有两个长的
data.frame的子集:

df1 <- data.frame("trial" = c('SA1','SA2','ES1','SA3','SA4','ES5'), "Genotype" = c('GID1','GID1','GID1','GID2','GID2','GID2'))
df2 <- data.frame('GID1'= c('0','1'),'GID2'=c('1','0'))
请注意,
data.frame
非常大,我在%
中尝试了
match
%等函数,但没有成功


提前感谢。

这比看起来容易:

df3 <- df2[df1$Genotype]
colnames(df3) <- df1$trial
df3
#   SA1 SA2 ES1 SA3 SA4 ES5
# 1   0   0   0   1   1   1
# 2   1   1   1   0   0   0

df3哇,谢谢。你能解释一下不使用逗号对数据帧进行子集设置的目的是什么吗。这对我来说是一件新鲜事,我一直认为在对数据帧进行子集设置时,您应该按行或列进行子集设置。thanks@AlexandreMondaini,你说得对,我在这里按栏目分组。但是,您可能会得到,例如,第一列同时包含
df1[,1]
df1[1]
。一个直观的原因是,数据帧实际上是由长度相等的元素(列)组成的列表。因此,实际上第一行可以是
df3
df3 <- df2[df1$Genotype]
colnames(df3) <- df1$trial
df3
#   SA1 SA2 ES1 SA3 SA4 ES5
# 1   0   0   0   1   1   1
# 2   1   1   1   0   0   0