我有两个矩阵,相同的大小,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
中是如何结束的。
答案 0 :(得分:2)
如果可以将两个“somethings”和“somethings-else”封装到提供与matrix_a[ ,1]
相同长度的向量的函数中,则可以构造向量sth_a
和{{1然后运行
sth_b