我想通过索引矢量来填充矩阵中的某些值。它应该是一个简单的循环
mat1[ i, as.numeric(index_vec[i]) ] = data[i,"price"]
我相信这是循环所需的唯一命令,因为如果我将1放在所有i的位置,它会正确地填充矩阵的第一行。有人知道R中非常基本的循环吗?我可能错了,但我认为这仅仅是语法问题。
答案 0 :(得分:0)
这不是一个RStudio问题,而是一个R问题。我们需要知道mat1
和data
的维度以及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"]