2015-05-03 167 views
2

我有一个矩阵,t3(唯一值= t1,其中包含10个值,随机测距,非连续从0:9)更新非连续值

set.seed(19) 
t3 = c(matrix(sample(t1),5,5)) 

与在矢量25倍的值

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

然后我就需要一套新的值来更新矩阵T3,给出固定的规则t2

t1 <-c(0,1,2,3,4,5,6,7,8,9) 
t2 <-c(0,1,3,2,5,4,7,6,9,8) 
newrule <-rbind(t1,t2) 

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

预期的结果将是一个矢量t4,其中矢量t3的值设置t1更新为t2

预期的结果:

t4 
[1] 1 5 4 0 3 8 9 2 6 7 1 5 4 0 3 8 9 2 6 7 1 5 4 0 3 
+0

请使用' set.seed' –

+0

如果您想以相同的方式对两个向量进行采样,可以使用'idx < - sample(1:100); t3 < - t1 [idx]; t4 < - t2 [idx]' – Frank

+0

@DavidArenburg为什么在这个意义上它是必要的?谢谢 – 9StoriesAround

回答

1

TR下面

newrule[2, match(t3, newrule[1, ])] 
## [1] 1 5 4 0 3 8 9 2 6 7 1 5 4 0 3 8 9 2 6 7 1 5 4 0 3 
+1

它适用于我的向量包含10000个值与511个变量! – 9StoriesAround