如果已经提出这个问题,我真诚地道歉,但我搜索得很高,找不到任何类似的问题。
我正在处理R中的数据帧,这是相当复杂的,所以我将其缩短为以下数据框:
data<-data.frame(x=c("ENG","ITA","RUS","SLO"),y=c(4,3,6,4))
list.country<-list("ENG","RUS")
我有一个创建列表的函数,比如上面的“list.country”,以及此列表中包含的任何条目,我想从data.frame中提取匹配的行到新的数据框中。因此,使用上面的数据和列表,我希望最终得到一个如下所示的新数据框:
new.data<-data.frame(x=c("ENG","RUS",),y=c(4,6))
我发现这样做的唯一方法是分别提取每一行,然后再将它们绑定在一起,方法如下:
vector.list<-unlist(list.country)
n=length(vector.list)
for(i in 1:n){
data[[i]]<-data[data$x==vector.list[i],]
}
for(i in 2:n){data[[i]]<- rbind(data[[i-1]],data[[i]])} }
有没有人有更简单的方法来做到这一点?
谢谢
答案 0 :(得分:1)
只做
data[data$x %in% list.country, ]
## x y
## 1 ENG 4
## 3 RUS 6
答案 1 :(得分:1)
%in%
函数搜索匹配第二个元素中的元素的第一个向量中的所有元素。在你的情况下,你应该这样做
data[data$x %in% list.country, ]