这是问题所在。 a
是将以b
中给定的值切4次的向量。将这两部分以相反的顺序切回。但是,使用b==1
会产生一个问题,从显示的输出中可以看出。中心问题是c(3:4, 1:2)
可以正常工作,但是c(1:4, 1:0)
不能正常工作(一个1太多)。如何在不编写过多额外代码的情况下最好地解决此问题?
a <- c(1:4)
b <- c(3,4,2,1)
d <- NULL
for(i in 1:(length(b))){
d <- c( d, a[ b[i]:length(a) ], a[ 1:(b[i]-1) ] )
print(d)
}
[1] 3 4 1 2
[1] 3 4 1 2 4 1 2 3
[1] 3 4 1 2 4 1 2 3 2 3 4 1
[1] 3 4 1 2 4 1 2 3 2 3 4 1 1 2 3 4 1
答案 0 :(得分:1)
您可以使用0
而不是1
来开始最后一个索引
a <- c(1:4)
b <- c(3,4,2,1)
d <- NULL
for(i in 1:(length(b))){
d <- c( d, a[ b[i]:length(a) ], a[ 0:(b[i]-1) ] )
print(d)
}
[1] 3 4 1 2
[1] 3 4 1 2 4 1 2 3
[1] 3 4 1 2 4 1 2 3 2 3 4 1
[1] 3 4 1 2 4 1 2 3 2 3 4 1 1 2 3 4
答案 1 :(得分:0)
问题在这里:
d <- c( d, a[ b[i]:length(a) ], a[ 1:(b[i]-1) ] )
您的循环功能是1:5。 b
只有4个索引