用向量替换矩阵列的分区

Replace a partition of a column of a matrix with a vector

我有 2 个 matrices/dataframes,A 和 B,每个尺寸为 50x30。

如何将矩阵 A 每列的前 11 个元素分别替换为矩阵 B 每列的 11 个元素,而不必循环每一列?

示例(对于矩阵 3x3 和 n_replace = 2):

matrix A      matrix B         resultant matrix
v1 v2 v3     v1 v2 v3          v1 v2 v3
1  2  1      12 99 .31   ->    12 99 .31    # replaced from matrix B
5  4  1      33 .2 12          33 .2 12     # replaced from matrix B
9  2  3      10 .3 14          9  2  3      # remained from matrix A

我想我可以做类似的事情

for(i in 1:3) {
   replace(A[,i], c(1:n_replace), B[1:n_replace,i])
}

但是在 R 中有更直接的 forward/smart 方法吗?

根据你的例子,你可以这样做:

A[1:2,] <- B[1:2,]
A
#     [,1] [,2]  [,3]
#[1,]   12 99.0  0.31
#[2,]   33  0.2 12.00
#[3,]    9  2.0  3.00

如果要替换每列前 11 个元素的值,逻辑是相同的:

A[1:11,] <- B[1:11,]

数据

A = matrix(c(1,5,9,2,4,2,1,1,3),nrow=3)
B = matrix(c(12,33,10,99,.2,.3,.31,12,14),nrow=3)

试试这个:

df_result <- df[1:11,]<- df1[1:11,]