

factory_list <- structure(c(5L, 4L, 2L, 3L, 1L), .Label = c("台北", "台中", "高雄", "新竹", "台南"), class = "factor")
factory_list
mydf <- structure(list(village = structure(c(1L, 2L, 3L, 4L, 5L), .Label = c("台北", "台中", "高雄", "新竹", "台南"),class = "factor"), 
                       rev = c(9.23913043478261,16.3571428571429, 15.6206896551724, 15.0980392156863, 10)), 
                  class = c("tbl_df", "tbl", "data.frame"), 
                  row.names = c(NA, -5L), 
                  .Names = c("factory", "rev"))
mydf
# result as I expexted
mydf[factory_list,]


mydf_wrong <- structure(list(village = structure(c(1L, 2L, 3L), .Label = c("台北", "台中", "高雄"), class = "factor"), 
                       rev = c(9.23913043478261,16.3571428571429, 15.6206896551724)), 
                  class = c("tbl_df", "tbl", "data.frame"), 
                  row.names = c(NA, -3L), 
                  .Names = c("factory", "rev"))
mydf_wrong
# main problem here:
mydf_wrong[factory_list,]




# 補充: 試圖自己重現問題卻得不出正確結果..
factory2 <- as.factor(c("a","b","c"))
mydf2 <- data.frame(factory=as.factor(c("c","a","b")),rev=c(1000,1500,3200))
mydf2[factory2,]









