R 如何提取列中与其中一行具有相同值的所有行?

R 如何提取列中与其中一行具有相同值的所有行?,r,data.table,R,Data.table,我有一个data.table,其中包含名称和类。每个名称属于一个类。这是一个示例数据集 library(data.table) DT <- data.table(name = c("John","Smith","Jane","Ruby","Emerald","Jasmine","Tulip"), class = c(1,2,3)) %中的%是为了确保如果有不止一个叫约翰的人,我就能抓住他们。有没有更漂亮的方法,比如使用join 编辑:如果我知道确切的名字

我有一个data.table,其中包含
名称
。每个
名称
属于一个
。这是一个示例数据集

library(data.table)
DT <- data.table(name = c("John","Smith","Jane","Ruby","Emerald","Jasmine","Tulip"),
                 class = c(1,2,3))
%中的
%是为了确保如果有不止一个叫约翰的人,我就能抓住他们。有没有更漂亮的方法,比如使用join

编辑:如果我知道确切的名字,而且只发生过一次,上面的内容将压缩为

DT[class == DT[name == "John", class], name]

我所寻找的是一种类似于“链接”的解决方案,在这种解决方案中,我可以消除嵌套,因为它看起来不雅观。

正如@Frank所建议的,我所寻找的是

DT[.(class[name %like% "John"]), on=.(class), name]
此外,根据@RonakShah的回答,这是可行的

DT[class == class[name %like% "John"])]

我忘记了列表可以用这种方式编制索引。

我不是一个
data.table
人,但也许是这样
DT[with(DT,class==class[name==“John”])]
您可以使用连接:
DT[(class[name==“John”]),on=(class),name]
请参见
?data.table
和上的渐晕图以了解详细信息。如果你的名字只有一个模式,那么就做
name%像%patt
而不是
name==“John”
谢谢你的回答@RonakShah,在data.table中,不需要带
DT[class == class[name %like% "John"])]