如何从R中的向量中洗牌?
How to shuffle from a vector in R?
假设我们有以下向量,它可以在一个循环内改变但长度固定:
V = c(8,15,16,7,3)
我需要在每次迭代中从 V
统一洗牌 m 个组件。 ( 1<=m<=5 & m 为整数)
然后我需要将这些组件存储在另一个矢量 K
的各自位置,其长度与 V
相同。其他位置将只包含值 0
.
例如:设 j 为当前迭代并假设 V
不会改变。一些可能的结果可能是:
m=3
---------------------
//
j=1
V= c(8,15,16,7,3)
K= c(0,15,0,7,3) # 3 numbers are shuffled //
//
j=2
V= c(8,15,16,7,3)
K= c(8,0,0,7,3) # 3 numbers are shuffled
//
.
.
.
j=4
V= c(8,15,16,7,3)
K= c(0,0,16,7,3) # 3 numbers are shuffled
我希望我的问题和期望的输出是清楚的。
非常感谢您的帮助!
这是一个非常粗略的解决方案,但它应该可以回答您的问题。
# initialization of parameters
V = c(8, 15, 16, 7, 3)
m = 3
n_iter = 10
mat <- matrix(0, nrow = n_iter, ncol = length(V))
# creation of matrix
set.seed(42)
for (j in 1:n_iter)
mat[j,] <- replace(V, sample(5, 2), 0)
输出
# [,1] [,2] [,3] [,4] [,5]
# [1,] 8 15 0 0 3
# [2,] 8 0 16 0 3
# [3,] 8 15 0 7 0
# [4,] 0 15 16 7 0
# [5,] 8 15 0 7 0
# [6,] 0 15 16 0 3
# [7,] 8 15 16 0 0
# [8,] 8 0 16 0 3
# [9,] 8 15 0 0 3
# [10,] 8 0 16 7 0
假设我们有以下向量,它可以在一个循环内改变但长度固定:
V = c(8,15,16,7,3)
我需要在每次迭代中从 V
统一洗牌 m 个组件。 ( 1<=m<=5 & m 为整数)
然后我需要将这些组件存储在另一个矢量 K
的各自位置,其长度与 V
相同。其他位置将只包含值 0
.
例如:设 j 为当前迭代并假设 V
不会改变。一些可能的结果可能是:
m=3
---------------------
//
j=1
V= c(8,15,16,7,3)
K= c(0,15,0,7,3) # 3 numbers are shuffled //
//
j=2
V= c(8,15,16,7,3)
K= c(8,0,0,7,3) # 3 numbers are shuffled
//
.
.
.
j=4
V= c(8,15,16,7,3)
K= c(0,0,16,7,3) # 3 numbers are shuffled
我希望我的问题和期望的输出是清楚的。 非常感谢您的帮助!
这是一个非常粗略的解决方案,但它应该可以回答您的问题。
# initialization of parameters
V = c(8, 15, 16, 7, 3)
m = 3
n_iter = 10
mat <- matrix(0, nrow = n_iter, ncol = length(V))
# creation of matrix
set.seed(42)
for (j in 1:n_iter)
mat[j,] <- replace(V, sample(5, 2), 0)
输出
# [,1] [,2] [,3] [,4] [,5]
# [1,] 8 15 0 0 3
# [2,] 8 0 16 0 3
# [3,] 8 15 0 7 0
# [4,] 0 15 16 7 0
# [5,] 8 15 0 7 0
# [6,] 0 15 16 0 3
# [7,] 8 15 16 0 0
# [8,] 8 0 16 0 3
# [9,] 8 15 0 0 3
# [10,] 8 0 16 7 0