Я хочу использовать свой экран для просмотра нескольких простых списков рядом.Я не пытаюсь объединить их, а-ля cbind
, но я бы не возражал, если бы была создана новая промежуточная структура.Поймите, конечно, что список может иметь много разных типов объектов, хотя я почти гарантирую, что мои списки имеют одинаковую структуру;не стесняйтесь вставлять «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"))
Если у вас широкий монитор, то кажется, что он занимает столько вертикального пространства и так мало места, используемого при горизонтальном доступе.Если бы эти списки были немного длиннее, я бы не смог увидеть больше двух одновременно, не уменьшив их до мелкого шрифта.
Если это облегчает, записи e3
в l1
и l2
могут быть "FOSS"
, чтобы соответствовать символьным векторам l3$e3
, но реальная цель - это проблема макета в консоли R.
Некоторые наивные, специфичные для интерфейса решения включают в себя:
- Запустите несколько экземпляров R, разделите экран, используя GNU
screen
и C-A |
- Изучите ESS, и пусть чудо Emacs решит все
- Goвперед и назад с помощью другого текстового редактора (например, 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))