Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
R 如何用行替换矩阵的非对角元素?_R - Fatal编程技术网

R 如何用行替换矩阵的非对角元素?

R 如何用行替换矩阵的非对角元素?,r,R,我想用a替换矩阵的非对角元素 数字序列。 我设法写了这样一篇文章: mat[outer(1:nrows(mat), 1:nrows(mat), function(i,j) j!=i)] <- seq(1:182) 我们可以试试 mat[lower.tri(mat, diag=FALSE)|upper.tri(mat, diag=FALSE)] <- 1:182 mat[lower.tri(mat,diag=FALSE)| upper.tri(mat,diag=FALSE)]Thx

我想用a替换矩阵的非对角元素 数字序列。 我设法写了这样一篇文章:

mat[outer(1:nrows(mat), 1:nrows(mat), function(i,j) j!=i)] <- seq(1:182)
我们可以试试

mat[lower.tri(mat, diag=FALSE)|upper.tri(mat, diag=FALSE)] <- 1:182

mat[lower.tri(mat,diag=FALSE)| upper.tri(mat,diag=FALSE)]Thx,但它的作用与我的代码相同。我需要按行而不是按列填充数字。@RobM您没有提供一个小示例或预期的输出。@RobM
t(mat)
给出了确切的输出。“我不想使用转置函数,因为我想保留特定的行名。”@Pascal请稍等。我可以删除它,也可以不删除它。你可以做你孩子气的活动。@akrun你能帮我吗?
t
选项更直接,你能不能重命名行名(如果我理解正确的话)它是我喜欢保留的dim名称,有可能吗?DIMNAME可以用
DIMNAME(m1)来更改。akrun可能有一个更简洁的方法,但这应该是可行的<代码>m[行(m)!=列(m)]
#   [,1] [,2] [,3] [,4] [,5]
# a   NA    1    2    3    4
# b    5   NA    6    7    8
# c    9   10   NA   11   12
# d   13   14   15   NA   16
# e   17   18   19   20   NA
mat[lower.tri(mat, diag=FALSE)|upper.tri(mat, diag=FALSE)] <- 1:182
mat[!diag(ncol(mat))] <- 1:182
m[!diag(ncol(m))] <- 1:20
out <- t(m)
dimnames(out) <- rev(dimnames(out))