我有一个数据框,其中包括一个单独的标识符(6个字母)和数字向量的向量
我想使用从另一个数据帧中获取的元素向量(再次是6个字母的标识符)对其进行子集化
这是我做的(在简化版本中,我的数据框有超过200列和64行)
n = c(2, 3, 5, 7, 8, 1)
i = c("abazzz", "bbaxxx", "ccbeee","dddfre", "sdtyuo", "loatvz" )
c = c(10, 2, 10, 2, 12, 34)
df1 = data.frame(n, i, c)
attach(example)
这是我想用于子集化的元素:
v<- c("abazzz", "ccbeee", "lllaaa")
这就是我对子集所做的事情
df2<-example[, i==abazzz | ccbeee | lllaaa]
这不起作用,我得到的错误是“abazzz”未找到(我尝试使用和没有“”,我尝试使用命令子集,出现相同的错误)
此外,我想避免使用或运算符,因为我需要用于子集的向量有大约50个元素 . 所以,换句话说,我想做的是将df2子集化,以便仅提取那些已经使用其标识符出现在df1中的个体(df1中的列)
写这个让我觉得这一定很容易做到,但我不能自己解决,我试着查找类似的问题,却找不到我想要的东西 . 我希望有人可以帮助我,建议其他帖子或手册,以便我可以学习 . 谢谢!
2 回答
(1) 而不是
尝试
(2)
两者都屈服
这是使用
data.table
二进制搜索的另一个不错的选择(为了效率)或者,如果您不想重新排序数据集并保持语法类似于基数R,则可以设置辅助密钥(由@Arun提供)
或
dplyr
(为简单起见)作为旁注:如评论中所述,永远不要使用
attach