假设我有一个像这样的向量:
c("A", "B", "C", "D")
有4个位置.如果我制作一个大小为1的样品,我可以得到1、2、3或4.我想要的是能够根据向量的顺序来计算长度3的子集,例如,如果我得到2:
c("B", "C", "D")
如果我得到3:
c("C", "D", "A")
如果我得到4:
c("D","A", "B")
这就是逻辑,向量被排序,最后一个元素与第一个元素连接,当我子集时.
假设我有一个像这样的向量:
c("A", "B", "C", "D")
有4个位置.如果我制作一个大小为1的样品,我可以得到1、2、3或4.我想要的是能够根据向量的顺序来计算长度3的子集,例如,如果我得到2:
c("B", "C", "D")
如果我得到3:
c("C", "D", "A")
如果我得到4:
c("D","A", "B")
这就是逻辑,向量被排序,最后一个元素与第一个元素连接,当我子集时.
我想我明白了!
v <- c("A", "B", "C", "D")
p <- sample(1:length(v), 1)
r <- c(v[p:length(v)])
c(r, v[!(v %in% r)])[1:3]
以及输出:
v <- c("A", "B", "C", "D") # your vector
r <- c(v[2:length(v)])
c(r, v[!(v %in% r)])[1:3]
#> [1] "B" "C" "D"
r <- c(v[3:length(v)])
c(r, v[!(v %in% r)])[1:3]
#> [1] "C" "D" "A"
r <- c(v[4:length(v)])
c(r, v[!(v %in% r)])[1:3]
#> [1] "D" "A" "B"
由reprex package(v2.0.1)于2022年5月16日创建
包装在函数中:
f <- function(v, nth) {
r <- c(v[nth:length(v)])
return(c(r, v[!(v %in% r)])[1:3])
}