我正在尝试将矩阵子集化以始终获得3*3矩阵.
例如,矩阵是子集a<-matrix(1:15,3,5),通常当我使用它进行子集时a[0:2,0:2],我得到:
[,1] [,2]
[1,] 1 4
[2,] 2 5
Run Code Online (Sandbox Code Playgroud)
但我希望得到类似的东西:
[,1] [,2] [,3]
[1,] NA NA NA
[2,] NA 1 4
[3,] NA 2 5
Run Code Online (Sandbox Code Playgroud)
当您选择时,强制所有0sNA以及任何“越界”值:
ro <- 0:2
co <- 0:2
a[replace(ro,ro == 0 | ro > nrow(a),NA),
replace(co,co == 0 | co > ncol(a),NA)]
# [,1] [,2] [,3]
#[1,] NA NA NA
#[2,] NA 1 4
#[3,] NA 2 5
Run Code Online (Sandbox Code Playgroud)
这甚至适用于您想要缺少的部分的组合:
ro <- c(1,0,2)
co <- 0:2
a[replace(ro,ro == 0 | ro > nrow(a),NA),
replace(co,co == 0 | co > ncol(a),NA)]
# [,1] [,2] [,3]
#[1,] NA 1 4
#[2,] NA NA NA
#[3,] NA 2 5
Run Code Online (Sandbox Code Playgroud)