假设我有以下内容:
myDF <- cbind.data.frame("Id" = rep(1:5, each = 4), values = c(rnorm(4,0,1), rnorm(4, 10, 1), rnorm(4, 20,1 ), rnorm(4, 30,1), rnorm(4, 40,1)))
idVector <- sample(1:5, size = 5, replace = TRUE)
如果我的'idVector = 4,4,3,2,1',我想用Id 4拉出所有行,然后再用Id 4拉,然后是3然后是2然后1.
我可以使用以下方法完成:
do.call("rbind", lapply(idVector, function(x, currentDF){
currentDF[currentDF$Id == x,]}
, myDF))
使用dplyr或plyr有更简洁的方法吗?
答案 0 :(得分:2)
使用dplyr
library(dplyr)
left_join(data.frame(Id=idVector), myDF)