【问题标题】:Matrix construction矩阵构造
【发布时间】:2016-07-10 22:50:37
【问题描述】:

这应该是一个相当简单的问题。在我下面有一个矩阵 PX。我想用变量代替没有数值的矩阵。但是,当我这样做时,我得到错误代码“找不到对象“p”。

我想我必须以某种方式取消定义“p”和“q”,你是怎么做到的?

PX <- matrix(c(0, p, 0, 0, q, 0, 
           q, 0, 0, p, 0, 0,
           q, 0, 0, 0, 0, p,
           0, 0, q, 0, 0, p,
           0, 0, 0, 0, 1, 0,
           0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)

亲切的问候,

彼得

【问题讨论】:

  • 如果是字符,需要加引号。
  • 对不起,我不明白。我要写“p
  • 我的意思是c(0, 0, "p", 0, "q")
  • 谢谢,这正是我所需要的。另外,有没有办法以一种很好且可表示的方式显示矩阵,而不是仅仅写“PX”
  • 抱歉,我不确定我是否理解您的问题。

标签: r matrix


【解决方案1】:

这可能会有所帮助。但它不会完成将大括号/括号放在行和列中的值周围的最终“数学”工作。为此,您确实需要 LaTek 或 MathML。

> p <- 'p'  # need a value (not necessarily "p") for the unquoted symbol - `p`
> q <- 'q'
> PX <- matrix(c(0, p, 0, 0, q, 0, 
+            q, 0, 0, p, 0, 0,
+            q, 0, 0, 0, 0, p,
+            0, 0, q, 0, 0, p,
+            0, 0, 0, 0, 1, 0,
+            0, 0, 0, 0, 0, 1), nrow = 6, ncol = 6, byrow = TRUE)
> PX
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,] "0"  "p"  "0"  "0"  "q"  "0" 
[2,] "q"  "0"  "0"  "p"  "0"  "0" 
[3,] "q"  "0"  "0"  "0"  "0"  "p" 
[4,] "0"  "0"  "q"  "0"  "0"  "p" 
[5,] "0"  "0"  "0"  "0"  "1"  "0" 
[6,] "0"  "0"  "0"  "0"  "0"  "1" 

> print(PX, quote=FALSE)
     [,1] [,2] [,3] [,4] [,5] [,6]
[1,] 0    p    0    0    q    0   
[2,] q    0    0    p    0    0   
[3,] q    0    0    0    0    p   
[4,] 0    0    q    0    0    p   
[5,] 0    0    0    0    1    0   
[6,] 0    0    0    0    0    1   

也可以定义行名和列名,所以如果你想抑制“cody”括号内的数字,你可以将所有名称定义为“”。

> colnames(PX) <- rep("",6)
> rownames(PX) <- rep("",6)
> print(PX, quote=FALSE)

 0 p 0 0 q 0
 q 0 0 p 0 0
 q 0 0 0 0 p
 0 0 q 0 0 p
 0 0 0 0 1 0
 0 0 0 0 0 1

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多