我正在尋找使用我的屏幕房地產看幾個簡單的列表並排。我不是想把它們合併起來,但我不介意是否創建了一個新的中間結構。當然,意識到列表可能有許多不同類型的對象,但我幾乎可以保證我的列表具有相同的結構;如果有必要,可以隨意插入「NA」或「NULL」,以便使其工作(或者我可以弄清楚如何解決這個問題)。如何在R中並排顯示列表 - 列表中的「cbind」?
這裏有三個例子列出了我想嘗試並排顯示方:
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
和l2
可能是"FOSS"
,以匹配l3$e3
的特徵向量,但真正的目標是在R控制檯的佈局問題。
一些幼稚的,特定的接口解決方案包括:
- 火起來了多個存在的R情況下,使用GNU
screen
和C-A |
- 瞭解ESS,並讓Emacs的奇蹟解決一切畫面分割
- 圍棋與另一個文本編輯器(例如Notepad ++)來回和手動遷移文本塊
非天真的解決方案t我正在嘗試的帽子是:
- 將這些寫入文本文件。這裏的問題是制定固定寬度的間距。也許
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))
+1這看起來不錯! – Iterator 2012-02-09 16:53:34
你的答案就是我希望在基地R實現的結果。詹姆斯的回答實際上比我預期的要好得多,但你的基礎R解決方案贏得了「控制檯」獎(與安慰......相比)。 – Iterator 2012-02-12 14:11:16