首页 > 解决方案 > 数据框 %in% 数据框。(R 编程)

问题描述

我正在尝试使用逻辑向量以特定方式从数据集中提取某些行:

Logical.vector <- df %in% df[df$a=='ABC123',]
Logical.vector
-----------------------------------------
 [1] FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE FALSE

作为df[df$a=='ABC123',]从具有下一个维度的数据帧 (df) 中提取的多行(“子数据帧”):

ndim(df) 
---------------------------------------
[1] 4226    11

为什么我的代码没有获得成功的结果?我可以通过哪种方式获得数据框行的逻辑向量?先感谢您!

标签: rdataframerows

解决方案


原因是它%in%适用于vector而不适用于listor data.frame。为此,我们需要==(但这仅适用于单个元素)。如果我们想使用%in%,那么paste每一行都为一个字符串

i1 <- do.call(paste, c(df, sep=", ")) %in% 
             do.call(paste,  c(df[df$a=='ABC123',], sep=", "))

推荐阅读