我已经做过几千次了,但我知道我错过了一些东西。我希望通过与另一列相匹配的列来子集数据框架。然而,标准流程似乎不起作用。我现在拥有的是:
a <- as.character(df1$col1)
b <- names(df2)
df2[(b %in% a), ]最后一行似乎什么也没做。没有错误,但是b %in% a位肯定不会返回所有TRUE。
a[1:10]
"2.5D" "2D" "2DFighter" "3DPlatformer" "3DVision" "4PlayerLocal" "4X" "Abstract" "Action" "Action-Adventure"
b[1:10]
"appid" "2.5D" "2D" "4PlayerLocal" "6DOF" "Action" "Action-Adventure" "ActionRPG" "Adventure" "Anime"
b[1:10] %in% a[1:10]
FALSE TRUE TRUE TRUE FALSE TRUE TRUE FALSE FALSE FALSE
names(df2[(b %in% a), ])
"appid" "2.5D" "2D" "4PlayerLocal" "6DOF" "Action" "Action-Adventure" "ActionRPG" "Adventure" "Anime" 我想要的是df2是df1中匹配列的子集。我想说,这是正确的方法,因为我甚至有两个向量,我与%in%匹配都是相同的字符格式。然而,柱状子集似乎没有做任何事情。
我在这里做了什么错事,有什么是显而易见的吗?
发布于 2017-07-09 05:13:27
这里重要的是,当使用df[a,b]进行子设置时,a子集设置行和b子集列。
正如@Kevin在评论中提到的那样:
df2[(b %in% a), ]正在从数据框架中删除一些行,这意味着所有列仍然存在。相反,要对列进行子集,我们需要:
df2[ ,(b %in% a) ]https://stackoverflow.com/questions/44992486
复制相似问题