按索引行进行子集设置在R中不起作用?

按索引行进行子集设置在R中不起作用?,r,R,我已经做了几千次了,但我知道我错过了一些东西。我想通过在另一个数据帧中匹配的列来子集一个数据帧。然而,标准流程似乎不起作用。以下是我所拥有的: a <- as.character(df1$col1) b <- names(df2) df2[(b %in% a), ] 我希望df2是df1中匹配列的子集。我想说这是正确的方法,因为我在%中匹配的两个向量都是相同的字符格式。然而,柱状子集似乎什么也没做 关于我在这里做错了什么,有什么是显而易见的吗?这里重要的是,当使用df[a,b]进行

我已经做了几千次了,但我知道我错过了一些东西。我想通过在另一个数据帧中匹配的列来子集一个数据帧。然而,标准流程似乎不起作用。以下是我所拥有的:

a <- as.character(df1$col1)
b <- names(df2)
df2[(b %in% a), ]
我希望df2是df1中匹配列的子集。我想说这是正确的方法,因为我在%中匹配的两个向量都是相同的字符格式。然而,柱状子集似乎什么也没做


关于我在这里做错了什么,有什么是显而易见的吗?

这里重要的是,当使用
df[a,b]
进行子集设置时,
a
子集行和
b
子集列

这(正如@Kevin在评论中提到的):

正在将某些行从数据框中子集,这意味着所有列仍然存在。要将列子集化,我们需要:

df2[ ,(b %in% a) ]

这里重要的是,当使用
df[a,b]
进行子集设置时,
a
子集行和
b
子集列

这(正如@Kevin在评论中提到的):

正在将某些行从数据框中子集,这意味着所有列仍然存在。要将列子集化,我们需要:

df2[ ,(b %in% a) ]

您不应该只使用
df2[as.character(df1$col1),]
来子集
df2
?我认为%中的
%测试是多余的,只要你在对行名称进行过滤。
名称(df2[(b%in%a),])
中的“逗号”给出了从
名称()
返回的所有向量。也许可以尝试
df2[,(b%in%a)]
而不是
df2[(b%in%a),]
?请注意逗号的不同,这意味着您正在对列而不是行进行子集设置。感谢@rosscova的帮助!伟大的我已经把它变成了下面的一个简单答案。你不应该用
df2[as.character(df1$col1),]
来子集
df2
?我认为%
中的
%测试是多余的,只要你在对行名称进行过滤。
名称(df2[(b%in%a),])
中的“逗号”给出了从
名称()
返回的所有向量。也许可以尝试
df2[,(b%in%a)]
而不是
df2[(b%in%a),]
?请注意逗号的不同,这意味着您正在对列而不是行进行子集设置。感谢@rosscova的帮助!伟大的我已经把它变成了下面的一个简短回答。
df2[ ,(b %in% a) ]