1
我需要写两个函数toBand()
和replaceBand()
:r功能来创建带矩阵
test3 <- toBand(test1,3)
test4 <- replaceBand(test1, toBand(test2,3))
得到下面的输出。
第一个返回对角线和对角线元素的矩阵,使用X的下三角形。第二个从所提供的频带矩阵中的数据中替换X中的对应元素。该函数然后返回修改的X.
是否有任何可用于执行此操作的软件包?有关如何做到这一点的任何建议?
谢谢
> test1
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "a11" "a21" "a31" "a41" "a51" "a61"
[2,] "a21" "a22" "a32" "a42" "a52" "a62"
[3,] "a31" "a32" "a33" "a43" "a53" "a63"
[4,] "a41" "a42" "a43" "a44" "a54" "a64"
[5,] "a51" "a52" "a53" "a54" "a55" "a65"
[6,] "a61" "a62" "a63" "a64" "a65" "a66"
> test2
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "*a11*" "*a21*" "*a31*" "*a41*" "*a51*" "*a61*"
[2,] "*a21*" "*a22*" "*a32*" "*a42*" "*a52*" "*a62*"
[3,] "*a31*" "*a32*" "*a33*" "*a43*" "*a53*" "*a63*"
[4,] "*a41*" "*a42*" "*a43*" "*a44*" "*a54*" "*a64*"
[5,] "*a51*" "*a52*" "*a53*" "*a54*" "*a55*" "*a65*"
[6,] "*a61*" "*a62*" "*a63*" "*a64*" "*a65*" "*a66*"
> test3
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "a11" "a22" "a33" "a44" "a55" "a66"
[2,] "a21" "a32" "a43" "a54" "a65" NA
[3,] "a31" "a42" "a53" "a64" NA NA
[4,] "a41" "a52" "a63" NA NA NA
> test4
[,1] [,2] [,3] [,4] [,5] [,6]
[1,] "*a11*" "*a21*" "*a31*" "*a41*" "a51" "a61"
[2,] "*a21*" "*a22*" "*a32*" "*a42*" "*a52*" "a62"
[3,] "*a31*" "*a32*" "*a33*" "*a43*" "*a53*" "*a63*"
[4,] "*a41*" "*a42*" "*a43*" "*a44*" "*a54*" "*a64*"
[5,] "a51" "*a52*" "*a53*" "*a54*" "*a55*" "*a65*"
[6,] "a61" "a62" "*a63*" "*a64*" "*a65*" "*a66*"
何亚伦,谢谢您的回复。我还有一个天真的问题。如何为需要矩阵和k值的S4“Band”类编写initialize()方法?它应该被定义为具有形式参数(x,k)的函数,并且应该将X的下三角形元素放入对象中。 – user635034 2011-03-04 03:40:36
@ user635034:我只使用S3方法。如果通常的S4文档不清楚,可以试试Hadley的wiki:https://github.com/hadley/devtools/wiki/S4 – Aaron 2011-03-04 05:12:16