我正在广泛地使用(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
来自R
和repl
的简短xterm
会话,非常希望保持这种方式。因此,涉及任何tmux
之王的解决方案对我不起作用。
(2)当我在GUI
会话时,经常加载的唯一附加包是R
包,它自动调整终端仿真器的宽度。它只会最大化可能的水平输出,因此没有负面影响(我知道。我也可以使用setwidth
轻松覆盖其设置;当前默认最大宽度为options(width=10000)
。)。确保我在启动时禁用了包。我尝试的所有解决方案(R
和edit
)仍然不允许我水平滚动。
(3)我在page(object, "print")
会话中使用vi
编辑模式,我通常使用repl
,h
,j
,{{1 }}
在k
中显示此类对象的最有效方法是什么?如果有人遇到同样的问题并找到解决办法,我会很高兴。
答案 0 :(得分:2)
一种方法是转换为普通矩阵并使用fix
,尽管它可能不是最有效的:
F2<-as(F, "matrix")
fix(F2)
如果你想看不到0,你可以这样做:
F2[F2==0] <- "."
fix(F2)