【问题标题】:Update non continuous values in vector更新向量中的非连续值
【发布时间】:2015-05-03 21:47:56
【问题描述】:

我有一个矩阵,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

【问题讨论】:

  • 请使用set.seed
  • 如果你想用同样的方式对两个向量进行采样,idx &lt;- sample(1:100); t3 &lt;- t1[idx]; t4 &lt;- t2[idx]
  • @DavidArenburg 为什么在这个意义上是必要的?谢谢
  • 因为我们无法在没有它的情况下重现您的数据,因为您使用 sample 创建了它,每次运行它都会产生不同的结果。
  • @DavidArenburg 它已经完成了。谢谢!

标签: r vector


【解决方案1】:

以下内容

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

【讨论】:

  • 它适用于包含 10,000 个值和 511 个变量的向量!
猜你喜欢
  • 1970-01-01
  • 2021-07-17
  • 2017-07-04
  • 1970-01-01
  • 2021-02-24
  • 1970-01-01
  • 1970-01-01
  • 2017-11-07
  • 1970-01-01
相关资源
最近更新 更多