这是上述答案的速度比较...
我从我自己的数据集中获取了在足球联赛前 4 名中进行的所有英格兰足球比赛的数据,可在此处获取: https ://github.com/jalapic/engsoccerdata
数据集是“engsoccerdata”,我使用第 3 列和第 4 列(主队和客队)粘贴在一起。我将每一列转换为一个字符向量。每个向量有 188,060 个元素 - 从 1888 年到 2014 年,英格兰足球排名前 4 位的足球比赛有 188,060 场。
这是比较:
df<-engsoccerdata
a<-as.character(df[,3])
b<-as.character(df[,4])
#tyler1
system.time(apply(cbind(a, b), 1, function(x) paste(sort(x), collapse=" ")))
#tyler2
unlist(Map(function(x, y) paste(sort(c(x, y)), collapse=" "), a, b),,FALSE)
#tyler3
mapply(function(x, y) paste(sort(c(x, y)), collapse=" "), a, b, USE.NAMES = FALSE)
#baptiste1
paste(pmin(a,b), pmax(a,b))
#baptiste2
ifelse(a < b, paste(a, b), paste(b, a))
#RichardS
unlist(Map(function(x,y) {
paste(sort(c(x,y)), collapse = " ")
}, a, b, USE.NAMES = FALSE))
#rnso1
apply(data.frame(apply(mapply(c, a, b, USE.NAMES = FALSE),1,paste)),1,function(x) paste(x[1],x[2]))
#rnso2
apply(apply(mapply(c, a, b, USE.NAMES = FALSE),2,sort),1,paste)
system.time() 结果:
# user system elapsed
#tyler1 42.92 0.02 43.73
#tyler2 14.68 0.03 15.04
#tyler3 14.78 0.00 14.88
#baptiste1 0.79 0.00 0.84
#baptiste2 1.25 0.00 1.28
#RichardS 15.40 0.01 15.64
#rnso1 6.22 0.10 6.41
#rnso2 13.07 0.00 13.15
很有意思。巴蒂斯特的方法快如闪电!