Rで2つ1組の数値をシャッフル

Rで2つを1組ごとにシャッフル.
入力例:(1,2),(3,4),(5)の並びは保存したままシャッフル

c(1,2,3,4,5)

出力例

> pare_shuffle(c(1,2,3,4,5,6))
[1] 1 2 5 6 3 4
> pare_shuffle(c(1,2,3,4,5,6))
[1] 5 6 3 4 1 2
> pare_shuffle(c(1,2,3,4,5,6))
[1] 3 4 1 2 5 6
> pare_shuffle(c(1,2,3,4,5,6))
[1] 5 6 1 2 3 4

関数

##Function
pare_shuffle<-function(cc){
	if(length(cc)%%2==1){
		ccc<-cc[1:(length(cc)-1)]
		index<-length(ccc)/2
		j<-sample(1:index,replace=F)
		jj<-0
		jj[seq(1,length(ccc)-1,2)]<-(2*j)-1
		jj[seq(2,length(ccc),2)]<-(2*j)
		l<-c(ccc[jj],cc[length(cc)])
	}else{
		ccc<-cc[1:(length(cc))]
		index<-length(ccc)/2
		j<-sample(1:index,replace=F)
		jj<-0
		jj[seq(1,length(ccc)-1,2)]<-(2*j)-1
		jj[seq(2,length(ccc),2)]<-(2*j)
		l<-c(ccc[jj])
		
	}
	l
}

#Example
pare_shuffle(c(1,2,3,4,5))
pare_shuffle(c(1,2,3,4,5))
pare_shuffle(c(1,2,3,4,5))