作者andrew43 (讨厌有好心推文後删文者)
看板R_Language
标题Re: [问题] 取矩阵的非对角线元素之组合名称
时间Fri May 2 21:20:03 2014
※ 引述《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/
:
: --
:
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.117.37.172
: ※ 文章网址: http://webptt.com/cn.aspx?n=bbs/R_Language/M.1399025671.A.44D.html
: → 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?
--
http://apansharing.blogspot.com/
--
※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 122.117.37.172
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/R_Language/M.1399036807.A.21D.html
1F:→ showfeb:an=unlist(sapply(2:n,":",n)); bn=rep(1:(n-1),(n-1):1) 05/02 22:04
2F:→ andrew43:楼上好神,非常谢谢。 05/03 01:43