显示/滚动大型R对象的有效方法

时间:2014-08-08 09:42:31

标签: r read-eval-print-loop

我正在广泛地使用(sparse) matrices中的大data.frames和大R。目前,我正在尝试为具有很多级别(通常为>40)的因子设置协方差因子矩阵。我通过做一些简单的测试来检查我是否正确设置了协方差因子(例如通过检查尺寸或执行特定于任务的矩阵计算,我希望输出某些值)但我也喜欢用自己的眼睛看待对象和检查值是否存储在右列和行中。例如。如果我希望在矩阵2.3的{​​{1}}位置说(i,j),我会相应地对其进行子集化,并检查正确的值是否位于M位置。

但很多时候我设置像块对角矩阵(可能非常大)这样的东西,我也喜欢看。更具体地说,我想水平和垂直地滚动它们。我通常会调用(i,j)。但这只允许我垂直滚动而不是水平滚动。对于比当前显示宽的page(object, "print"),我可以使用data.frames甚至View。然而,这些都不适用于例如对象。班edit

以下是我希望能够水平和垂直滚动的稀疏矩阵的一个小例子:

dgCMatrix

关于我使用library(Matrix) A <- model.matrix(~rep(rep(factor(1:2), each = 2), times = 2800)) B <- t(as(rep(factor(1:70), each = 160), Class = "sparseMatrix")) C <- t(as(rep(rep(factor(1:40), each = 4), times = 70), Class = "sparseMatrix")) D <- t(KhatriRao(t(B), t(A))) E <- t(KhatriRao(t(C), t(A))) # This is an example of an object I would like to scroll through. # If your display should happen to be big enough just take the # transpose of F: F <- cBind(D, E) 的方式的一些基本信息:

(1)我正在使用R来自Rrepl的简短xterm会话,非常希望保持这种方式。因此,涉及任何tmux之王的解决方案对我不起作用。

(2)当我在GUI会话时,经常加载的唯一附加包是R包,它自动调整终端仿真器的宽度。它只会最大化可能的水平输出,因此没有负面影响(我知道。我也可以使用setwidth轻松覆盖其设置;当前默认最大宽度为options(width=10000)。)。确保我在启动时禁用了包。我尝试的所有解决方案(Redit)仍然不允许我水平滚动。

(3)我在page(object, "print")会话中使用vi编辑模式,我通常使用replhj,{{1 }}

k中显示此类对象的最有效方法是什么?如果有人遇到同样的问题并找到解决办法,我会很高兴。

1 个答案:

答案 0 :(得分:2)

一种方法是转换为普通矩阵并使用fix,尽管它可能不是最有效的:

F2<-as(F, "matrix")
fix(F2)

如果你想看不到0,你可以这样做:

F2[F2==0] <- "."
fix(F2)