R-循环数据集

时间:2015-06-15 23:29:32

标签: r

我想通过索引矢量来填充矩阵中的某些值。它应该是一个简单的循环

mat1[ i, as.numeric(index_vec[i]) ] = data[i,"price"]

我相信这是循环所需的唯一命令,因为如果我将1放在所有i的位置,它会正确地填充矩阵的第一行。有人知道R中非常基本的循环吗?我可能错了,但我认为这仅仅是语法问题。

1 个答案:

答案 0 :(得分:0)

这不是一个RStudio问题,而是一个R问题。我们需要知道mat1data的维度以及index_vec的长度,以了解这是否有意义。看起来你可能来自另一种语言,其中一切都是使用索引进行for循环。这并不总是使用R的最佳方式。如果index_vec的长度与data的行数相同且as.numeric(index_vec)的值大于1且在或低于mat1的列数,然后修改版本上面的建议使用:

mat1[ 1 , as.numeric(index_vec) ] <-  data[ ,"price"]

...应该成为行分配的列。 RHS上的长度需要等于LHS上指定的值的数量。如果我猜测index_vec的性质是错误的,并且它只有一个数字,那么可能是列到列的分配:

mat1[  , as.numeric(index_vec) ] <-  data[ ,"price"]

然后还有第三种可能性。如果index_vec是一组列位置,隐式行位置从1到长度(index_vec),则可以执行此操作:

 mat1[ cbind( seq_along(index_vec) , as.numeric(index_vec) )  ] <-  data[ ,"price"]