R 过滤向量上的数据帧

R 过滤向量上的数据帧,r,dataframe,subset,R,Dataframe,Subset,我有一个带有ID列的数据框df,例如a,B,等等。我还有一个包含特定ID的向量: L <- c("A", "B", "E") 但是如何对整个向量进行过滤呢?我认为您需要使用“匹配”。它将一个向量中的值与另一个向量中的值相匹配,并在不匹配的地方给出NA。那么你就基于子集!是比赛的第一名 看到了吗?匹配,您可能可以自己解决,在这种情况下,您将从别人不久将要做的正确答案中学到更多,这将鼓励您剪切n粘贴:)您可以使用%操作符中的% > df <- data.frame(id=c(LE

我有一个带有ID列的数据框
df
,例如
a
B
,等等。我还有一个包含特定ID的向量:

L <- c("A", "B", "E")

但是如何对整个向量进行过滤呢?

我认为您需要使用“匹配”。它将一个向量中的值与另一个向量中的值相匹配,并在不匹配的地方给出NA。那么你就基于子集!是比赛的第一名


看到了吗?匹配,您可能可以自己解决,在这种情况下,您将从别人不久将要做的正确答案中学到更多,这将鼓励您剪切n粘贴:)

您可以使用%操作符中的
%

> df <- data.frame(id=c(LETTERS, LETTERS), x=1:52)
> L <- c("A","B","E")
> subset(df, id %in% L)
   id  x
1   A  1
2   B  2
5   E  5
27  A 27
28  B 28
31  E 31
或者将它们作为数据帧的行名,并按行提取:

> rownames(df) <- df$id
> df[L, ]
  id x
A  A 1
B  B 2
E  E 5
>行名(df)df[L,]
id x
A 1
B 2
E 5

最后,对于更高级的用户,如果速度是一个问题,我建议查看
data.table
包。

完整性:您也可以使用
df[id%in%L,]
不在?
> df <- data.frame(id=c(LETTERS), x=1:26)
> df[match(L, df$id), ]
  id x
1  A 1
2  B 2
5  E 5
> rownames(df) <- df$id
> df[L, ]
  id x
A  A 1
B  B 2
E  E 5