【问题标题】:Print a matrix without row and column indices打印没有行和列索引的矩阵
【发布时间】:2015-01-10 11:04:09
【问题描述】:

如果我打印一个矩阵,它会在控制台中显示行和列索引。例如

> print(diag(3))
     [,1] [,2] [,3]
[1,]    1    0    0
[2,]    0    1    0
[3,]    0    0    1

如何抑制列和行索引? IE。像这样:

> print(diag(3), indices=FALSE)
1    0    0
0    1    0
0    0    1

我可以看到 cwhmisc 包应该包含一个 printM 函数来执行此操作 according to the documentation 但当我加载 cwhmisc 时它不存在。此外,这似乎是您在基础 R 中应该能够做到的。

【问题讨论】:

  • 问题:为什么你想这样做?打印到控制台纯粹是为了操作使用;如果您希望将矩阵“打印”到文件中,则有很多选项,例如 write.table 来禁止行名和列名。
  • 答案:快速将矩阵(实际上是as.matrix(tabular(...)))复制到纸质草稿中,无需写入/打开/复制/关闭文件,也无需手动删除索引。我猜只是懒惰。

标签: r matrix printing indices


【解决方案1】:

函数write.table的另一种解决方案

write.table(diag(3), row.names=F, col.names=F)

您可以通过用表格分隔列来使其更漂亮

write.table(matrix(sample(1000,9),3,3), row.names=F, col.names=F, sep="\t")

【讨论】:

    【解决方案2】:

    base 包中的函数prmatrix 可以为此工作,它可以接受参数collabrowlab

    prmatrix(diag(3), rowlab=rep("",3), collab=rep("",3))
    
     1 0 0
     0 1 0
     0 0 1
    

    【讨论】:

    • (+1) 很有趣,它是文档中的示例 :)
    • 这增加了顶部和左侧的空间。输出与m <- diag(3); colnames(m) <- rownames(m) <- rep("", 3); print(m) 相同。
    • 文档似乎已经过时了:它引用了print.matrix,但在当前的 R 版本中似乎没有任何这样的打印方法。
    • 谢谢!我在write.table 上选择了这个答案,因为它使列保持对齐,而且我的矩阵中确实有字符。手动指定 rowlabcollab 很丑陋,出于这个原因,我尝试将 write.tableprint(...., gap=3) 结合使用,但无法使其正常工作。使用prmatrix(my_matrix, rowlab=rep("", nrow(my_matrix), collab=rep("", ncol(my_matrix)) 对未来的复制和粘贴更好:-) 欢迎您用这个更新您的答案。
    猜你喜欢
    • 1970-01-01
    • 2023-03-12
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-23
    • 2016-12-29
    相关资源
    最近更新 更多