我想知道一种使用[]进行子集化的方法,它保留了查询的顺序(作者),例如:
authors<-c("Almeda","Acosta", "Moscone", "Guerra")
authorcountry <- read.table(text="
authoralone countryalone
1 Acosta Argentina
2 Aguilera Argentina
3 Almeda U.S.A
4 Alves Brazil
5 Araújo Brazil
6 Bernardello Argentina
7 Daviña Argentina
8 Guerra Brazil
9 Honfi Argentina
10 Moscone Argentina",header=TRUE,fill=TRUE,stringsAsFactors=FALSE)
authorcountry$countryalone[(authorcountry$authoralone %in% authors)]
#order should be:
# [1] "U.S.A" "Argentina" "Argentina" "Brazil"
#as in:
authors<-data.frame(authors)
get_merge<-merge(authors,authorcountry, by.x="authors", by.y="authoralone", sort = FALSE)
get_merge$countryalone
答案 0 :(得分:3)
您可以使用match
,即
authorcountry$countryalone[match(authors, authorcountry$authoralone)]
#[1] "U.S.A" "Argentina" "Argentina" "Brazil"
答案 1 :(得分:1)
或使用dplyr
library(dplyr)
authorcountry %>%
slice(match(authors, authoralone)) %>%
.$countryalone
#[1] "U.S.A" "Argentina" "Argentina" "Brazil"