我有以下形式的矩阵,转化NA到中的R矩阵的特定阵列
mat <- matrix(1:25, 5,5)
,看起来像以下:
现在,我需要改造这矩阵的形式如下图所示:
也就是说,我想保留第2行和第4行以及第2列和第4列的所有元素,并用NA代替所有其他值。这只是一个简单的例子来解释这个问题。我的实际矩阵大小约为2000 X 2000.任何帮助将不胜感激。
我有以下形式的矩阵,转化NA到中的R矩阵的特定阵列
mat <- matrix(1:25, 5,5)
,看起来像以下:
现在,我需要改造这矩阵的形式如下图所示:
也就是说,我想保留第2行和第4行以及第2列和第4列的所有元素,并用NA代替所有其他值。这只是一个简单的例子来解释这个问题。我的实际矩阵大小约为2000 X 2000.任何帮助将不胜感激。
您的第一个和第二个矩阵是不同的,因为第一个矩阵填充为R将填充矩阵(即列 - 主阶),第二个矩阵是行 - 主要。
假设你的意思是具有相同的矩阵,你的任务可以用简单的矩阵运算来解决:
mat <- matrix(1:25, 5,5)
mat2 <- matrix(NA, 5,5)
mat2[c(2,4),] <- 1
mat2[,c(2,4)] <- 1
mat * mat2
[,1] [,2] [,3] [,4] [,5]
[1,] NA 6 NA 16 NA
[2,] 2 7 12 17 22
[3,] NA 8 NA 18 NA
[4,] 4 9 14 19 24
[5,] NA 10 NA 20 NA
如果没有,只是转你的初始矩阵t(mat)
,并按照同样的方法同上。
mat = t(mat)
replace(x = mat, which((matrix(row(mat) %in% c(2, 4), NROW(mat), NCOL(mat)) |
matrix(col(mat) %in% c(2, 4), NROW(mat), NCOL(mat))) == FALSE,
arr.ind = TRUE), NA)
# [,1] [,2] [,3] [,4] [,5]
#[1,] NA 2 NA 4 NA
#[2,] 6 7 8 9 10
#[3,] NA 12 NA 14 NA
#[4,] 16 17 18 19 20
#[5,] NA 22 NA 24 NA
这也适用。谢谢。但是,而不是c(2,4)如果我有一个数据集数据$数字,它会工作吗? – smk
谢谢。你是对的。我的意思是有相同的矩阵。 – smk
而不是c(2,4)如果我有一个数据集数据$数字,它会工作吗? – smk
您可以为列和行的indeces使用一个已命名的向量。例如'sel_rows < - c(2,4)'然后'mat2 [sel_rows,] < - 1' 所以你只想用位置索引向量来表示数字的数据集。 – dshkol