【发布时间】:2014-02-25 02:05:42
【问题描述】:
我有一个数字 1:17 的向量。我在其中随机重新排序子集向量(下面的示例是必须随机重新排序 1:10 和 11:17):
x = c(1:10)
x_s = sample(x, length(x), replace = FALSE)
[1] 7 9 3 4 10 5 1 6 8 2
y=c(11:17)
> y_s = sample(y, length(y), replace = FALSE)
[1] 17 16 13 12 14 15 11
final=c(x_s,y_s)
[1] 7 9 3 4 10 5 1 6 8 2 17 16 13 12 14 15 11
虽然我能够获得最终重新排序的向量,但是否有更优雅的方法来处理此代码?我之所以问是因为这只是一个示例,而我真正的问题是一个更大的向量,其中包含更多需要随机重新排序的子向量。代码会太多行!
谢谢。
【问题讨论】:
-
子集是如何确定的?
-
对于这个确切的例子,你可以做
unlist(lapply(list(1:10, 11:17), sample))。 -
仅供参考,当分配连续整数
x <- c(1:10)时,您不需要使用c()。x <- 1:10也一样。 -
感谢两位的帮助! @AnandaMahto:子集有点奇怪:第一个子集是 1 和 52。第二个子集是 2-51。第三个子集是 53-102。第四个到第 23 个子集是长度为 26 的连续子集(即 103-128、129-154、...、675-700)
-
所以,它是“子集”而不是“子字符串”,因为我猜是第一个子集(1 和 52)......