用向量替换矩阵列的分区
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,]
我有 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,]