2017-10-21 83 views
0

如何将向量a<-c(1,2,3,4,5,6)放置在矩阵m<-matrix(0, nrow = 10, ncol = 10)的ramdom位置?在矩阵R中随机放置一个向量

的载体必须是在一起:

 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 0 0 0 0 0 0 0 0 0  0 
[2,] 1 0 0 0 0 0 0 0 0  0 
[3,] 2 0 0 0 0 0 0 0 0  0 
[4,] 3 0 0 0 0 0 0 0 0  0 
[5,] 4 0 0 0 0 0 0 0 0  0 
[6,] 5 0 0 0 0 0 0 0 0  0 
[7,] 6 0 0 0 0 0 0 0 0  0 
[8,] 0 0 0 0 0 0 0 0 0  0 
[9,] 0 0 0 0 0 0 0 0 0  0 
[10,] 0 0 0 0 0 0 0 0 0  0 

而且它必须是水平,垂直或斜 我曾尝试:

start = sample.int(length(m), 1) 
m[start:(start+length(a)-1)] = a 

但它不能发生如下:

 [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
[1,] 0 0 0 0 0 0 5 0 0  0 
[2,] 0 0 0 0 0 0 6 0 0  0 
[3,] 0 0 0 0 0 0 0 0 0  0 
[4,] 0 0 0 0 0 0 0 0 0  0 
[5,] 0 0 0 0 0 0 0 0 0  0 
[6,] 0 0 0 0 0 0 0 0 0  0 
[7,] 0 0 0 0 0 1 0 0 0  0 
[8,] 0 0 0 0 0 2 0 0 0  0 
[9,] 0 0 0 0 0 3 0 0 0  0 
[10,] 0 0 0 0 0 4 0 0 0  0 

谢谢

回答

1

样品相同的尺寸a的一维指数,然后在这些索引分配向量m

m[sample.int(length(m), length(a))] <- a 
m 
#  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
# [1,] 0 6 0 0 0 0 0 0 0  0 
# [2,] 0 0 0 0 0 4 0 0 0  0 
# [3,] 0 3 0 1 0 0 0 0 5  0 
# [4,] 0 0 0 0 0 0 0 0 0  0 
# [5,] 0 0 0 0 0 0 0 0 0  0 
# [6,] 0 0 0 0 0 0 0 0 0  0 
# [7,] 0 0 0 0 0 0 0 0 0  0 
# [8,] 0 0 0 0 0 0 0 0 2  0 
# [9,] 0 0 0 0 0 0 0 0 0  0 
#[10,] 0 0 0 0 0 0 0 0 0  0 

如果载体必须是连续的,则可以品尝的起始索引,和然后用范围索引分配:

start = sample.int(length(m), 1) 
m[start:(start+length(a)-1)] = a 

m 
#  [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] 
# [1,] 0 0 0 0 0 0 0 0 0  0 
# [2,] 0 0 0 0 0 0 0 0 0  0 
# [3,] 0 0 0 0 0 0 0 0 0  0 
# [4,] 0 0 0 0 0 0 0 0 0  0 
# [5,] 1 0 0 0 0 0 0 0 0  0 
# [6,] 2 0 0 0 0 0 0 0 0  0 
# [7,] 3 0 0 0 0 0 0 0 0  0 
# [8,] 4 0 0 0 0 0 0 0 0  0 
# [9,] 5 0 0 0 0 0 0 0 0  0 
#[10,] 6 0 0 0 0 0 0 0 0  0 
+0

Thaks,但我的意思是该载体要在一起作为我再次 – Picachu

+0

由于添加了编辑,但与该代码,我仅水平获得载体中,除了它发生下列: – Picachu