如何在循环中设置矩阵的值?

时间:2011-11-23 22:44:45

标签: r

我有两个矩阵,相同的大小,200万行和2列。 matrix_a有值,而matrix_b为空,matrix_b的值将由matrix_a中的vaule决定。

matrix_b <- matrix(, nrow(matrix_a),2)
for(rows in 1:nrow(matrix_a)){
    if (matrix_a[rows,1]==0){
         .....do something get values of x, 
         matrix_b[rows,2] = x
         }
    else {
          do sth else get value of y,
          then set matrix_b 
          }
    }

首先,如何加速此循环,因为有2百万行,处理起来非常慢。 其次,我注意到当我尝试将一个值从matrix_a复制到matrix_b时,似乎无效。例如,在我的数据中

matrix_a[1,1] = 'user1'
将值复制为

matrix_b[1,1] = matrix_a[1,1]

然而,结果以

开启
matrix_b[1,1]='1'

为什么?为什么值'user1'未设置为matrix_b

我刚刚发现这可能与排序有关,因为我首先对数据进行排序以生成matrix_a。这里的值“1”表示排序后的第一行,但我仍然不知道它在matrix_b中是如何结束的。

1 个答案:

答案 0 :(得分:2)

如果可以将两个“somethings”和“somethings-else”封装到提供与matrix_a[ ,1]相同长度的向量的函数中,则可以构造向量sth_a和{{1然后运行

sth_b