【发布时间】:2016-02-12 10:56:14
【问题描述】:
我想用一个替换矩阵的非对角元素 数字序列。 我设法写了这个:
mat[outer(1:nrows(mat), 1:nrows(mat), function(i,j) j!=i)] <- seq(1:182)
但它按列填充数字。我不想使用 转置函数,因为我有我想要的特定行名 保留。
示例
所以如果我有一个矩阵 m
m <- matrix(NA, nrow=5, ncol=5, dimnames=list(letters[1:5], NULL))
m
# [,1] [,2] [,3] [,4] [,5]
# a NA NA NA NA NA
# b NA NA NA NA NA
# c NA NA NA NA NA
# d NA NA NA NA NA
# e NA NA NA NA NA
如何在保留原始矩阵的行名的同时向非对角线添加序列:预期输出
# [,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
【问题讨论】:
-
@akrun 你能帮我吗?
-
t选项更直接,你不能只重命名行名(如果我理解正确的话) -
它暗淡的名字,我喜欢保留,可以吗?
-
可以使用
dimnames(m1)<-更改dimnames -
Akrun 可能有一个更简洁的方法,但这应该可行...
m[row(m) != col(m)] <- 1:20 ; out <- t(m); dimnames(out) <- rev(dimnames(out))(向以前的 cmets 致敬)
标签: r