我希望利用我的屏幕空间并排查看几个简单的列表。我并不是想把它们结合起来,a lacbind
,但我不介意是否创建一个新的中间结构。当然,要意识到一个列表可能有许多不同类型的对象,尽管我几乎保证我的列表具有相同的结构;如果有必要让事情正常工作,请随意插入“NA”或“NULL”(或者我可以弄清楚如何解决这个问题)。
以下是我想尝试并排显示的三个示例列表:
l1 <- list(e1 = "R", e2 = list("statistics", "visualization"), e3 = 0)
l2 <- list(e1 = "Perl", e2 = list("text processing", "scripting"), e3 = 0)
l3 <- list(e1 = "Matlab", e2 = list("numerical computing", "simulation"), e3 = c("academic - unknown", "professional - unknown"))
如果您有一台宽显示器,那么看到这些显示器占据了如此多的垂直空间而在水平通道上使用了如此之少的空间,这看起来像是一种浪费。如果这些列表再长一点,我就无法一次看到超过 2 个列表,而无需缩小字体。
如果它能让事情变得更容易,e3
条目在l1
and l2
可能"FOSS"
,匹配的字符向量l3$e3
,但真正的目标是 R 控制台中的布局问题。
一些简单的、特定于接口的解决方案包括:
- 启动多个 R 实例,使用 GNU 分屏
screen
and C-A |
- 学习ESS,让Emacs的奇迹解决一切
- 使用另一个文本编辑器(例如 Notepad++)来回移动文本块
我正在尝试的非天真的解决方案是:
- 将它们写到一个文本文件中。这里的问题是计算出固定宽度的间距。或许
read.fwf
有助于。 (如果条目超出了分配的空间,可以因错误而停止,或者截断内容。)
- 尝试一些与
reshape
包裹。
- 可能涉及到一些事情
xlsx
,创建一堆单元格,每个单元格都有文本条目,然后尝试显示一个大字符矩阵。
还有其他一些更有效的方法吗?再次强调,没有什么东西真正需要组合成一个对象,只需组合在视觉显示中即可。
更新 1. 这是一个使用的示例plyr
。诚然,结果相当粗糙 - 列表和列表元素的名称没有被保留,这并不难修复,但我怀疑可以做得比这更好。我可以像 R 通常打印列表一样打印列表,但以某种方式分隔窗口。我怀疑这并不容易。
combineLists <- function(manyLists){
library(plyr)
newLists <- list()
for(ixList in 1:length(manyLists)){
tmpList <- lapply(manyLists[[ixList]], paste, sep = "", collapse = ", ")
tmpVec <- as.character(tmpList)
newLists[[ixList]] <- tmpVec
}
newDF <- t(ldply(newLists))
return(newDF)
}
combineLists(list(l1, l2, l3))