根据现有变量的值

时间:2018-02-18 14:43:25

标签: r

我想创建一个新的向量。我有以下结构的数据:

A <- matrix(c(1,2,1,3,4,1,5,7,3,3,7,4), nrow=6, ncol=2)

我想创建一个按以下方式制作的矢量:

每行:

  • 如果第1列中的观察值等于1,则创建一个等于第2列中观察值的单个变量
  • 如果“”“”“”“2,创建2个与第2列中的观察相等的变量
  • 如果“”“”“”“3,创建3个变量...... 等

使用我的示例矩阵A,我最终会得到一个向量B,如下所示:

B <- matrix(c(5,7,7,3,3,3,3,7,7,7,7,4),nrow=12,ncol=1)

所以你最终会得到一个向量,只要原始矩阵中第1列的总和。

任何人都可以帮助一些简单的代码从A生成B吗?

2 个答案:

答案 0 :(得分:5)

您可以使用rep执行所需操作:

rep(A[, 2], A[, 1])
 # [1] 5 7 7 3 3 3 3 7 7 7 7 4

答案 1 :(得分:0)

也许这就是你想要的:

unlist(sapply(1:nrow(A),function(x) rep(A[x,2],A[x,1])))