作者HeroNoah ()
看板R_Language
标题Re: [问题] 取矩阵的非对角线元素之组合名称
时间Sat May 3 01:28:58 2014
x = outer(
colnames(M),
rownames(M),
paste,
sep = "-"
)
x[lower.tri(x)]
an = Row indexes of lower triangular part of a Matrix.
bn = Column indexes of lower triangular part of a Matrix.
※ 引述《andrew43 (讨厌有好心推文後删文者)》之铭言:
: ※ 引述《andrew43 (讨厌有好心推文後删文者)》之铭言:
: : 标题: [问题] 取矩阵的非对角线元素之组合名称
: : 时间: Fri May 2 18:14:28 2014
: : [问题类型]:
: : 程式谘询(我想用R 做某件事情,但是我不知道要怎麽用R 写出来)
: : [软体熟悉度]:
: : 使用者(已经有用R 做过不少作品)
: : [问题叙述]:
: : 对於具有 colnames 和 rownames 的一个 matrix,
: : 该如何取得所有非对角线元素的 colnames 和 rownames 的组合的字串向量?
: : [程式范例]:
: : M <- matrix(1:25, 5)
: : colnames(M) <- c("a","b","c","d","e")
: : rownames(M) <- c("a","b","c","d","e")
: : 可得到 M
: : # a b c d e
: : #a 1 6 11 16 21
: : #b 2 7 12 17 22
: : #c 3 8 13 18 23
: : #d 4 9 14 19 24
: : #e 5 10 15 20 25
: : 接下来,我想取得一个字串向量 mynames 使其结果为
: : c("b-a" , "c-a", "d-a", "e-a", "c-b", ... , "e-c", "e-d")
: : 也就是矩阵 M 的左下侧非对角线元素的列名与栏名组合。
: : 请教有没有什麽方式可以快速达成?
: : 用 loop 是可以达成,但我想应该有更乾净的办法。
: : --
: : http://apansharing.blogspot.com/
: : --
: : → clickhere:cbind(rownames(M)[c(2:5,3:5,4:5,5)],rep(colnames(M), 05/02 20:48
: : → clickhere:,c(4,3,2,1)) 05/02 20:49
: : → clickhere:paste by row with sep="-" 05/02 20:49
: 谢谢 clickhere 版友。
: 我的这个问题之核心其实可以抽象化为如何产生以下二组数列:
: an = 2,3,4,...,N, 3,4,...,N, 4,...,N, ...., N-2, N-1,N, N
: 以及
: bn = 连续 N-1 个 1, 连续 N-2 个 2, ... 连续 N-(N-1) 个 N-1,以及尾巴一个 N。
: 假如 N 很小,按 clickhere 板友的方法可行,
: 但我的 dim(M) 可能不是定值且可能很大,
: 不知道有没有什麽方式可以以 length(N) 为引数产生 an 及 bn?
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 119.14.64.43
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/R_Language/M.1399051740.A.5B3.html
※ 编辑: HeroNoah (119.14.64.43), 05/03/2014 01:37:13
※ 编辑: HeroNoah (119.14.64.43), 05/03/2014 01:42:52
1F:推 andrew43:非常谢谢。看来就是需要 outer() 没错。 05/03 01:43