有没有办法查看列表

时间:2015-09-16 20:46:52

标签: r list

当我有data.frame个对象时,我可以简单地执行View(df),然后我会在一张漂亮的桌子上看到data.frame(即使我看不到所有的行,我仍然知道我的数据包含哪些变量)。

但是当我有一个list对象时,相同的命令不起作用。当列表很大时,我不知道列表是什么样的。

我试过head(mylist),但我的控制台根本无法一次显示所有信息。在R中查看大型列表的有效方法是什么?

10 个答案:

答案 0 :(得分:9)

我使用str来查看任何对象的结构,尤其是复杂的列表

Rstudio通过单击数据窗口中的蓝色箭头显示结构:

enter image description here

答案 1 :(得分:8)

以下是查看列表的几种方法:

查看列表中的一个元素:

myList[[1]]

查看列表中一个元素的头部:

head(myList[[1]])

整齐地查看列表中的元素:

summary(myList)

查看列表的结构(更深入):

str(myList)

或者,如上所述,您可以制作自定义打印方法:

printList <- function(list) {

  for (item in 1:length(list)) {

    print(head(list[[item]]))

  }
}

以上将打印出列表中每个项目的头部。

答案 2 :(得分:5)

您还可以使用名为listviewer

的包
devtools::install_github(c('jeroenooms/jsonlite', 'rstudio/shiny', 'ramnathv/htmlwidgets', 'timelyportfolio/listviewer'))
library(listviewer)
jsonedit( myList )

答案 3 :(得分:4)

如果你有一个非常大的列表,你可以使用

查看其中的一部分
str(myList, max=1)

答案 4 :(得分:1)

您可以使用lapply系列检查数据框的“头部”:

lapply(yourList, head)

将返回您列表的“头部”。

例如:

df1 <- data.frame(x = runif(3), y = runif(3))
df2 <- data.frame(x = runif(3), y = runif(3))
dfs <- list(df1, df2)

lapply(dfs, head)

返回:

> lapply(dfs, head)
[[1]]
          x         y
1 0.3149013 0.8418625
2 0.8807581 0.5048528
3 0.2490966 0.2373453

[[2]]
          x         y
1 0.4132597 0.5762428
2 0.0303704 0.3399696
3 0.9425158 0.5465939

您可以使用与data.frames相关的任何功能,而不是“head”,即namesnrow ......

答案 5 :(得分:1)

看到您明确指定要与列表一起使用View()时,可能正是您要查找的内容:

View(myList[[x]])

x是您要查看的列表元素的编号。

例如:

View(myList[[1]])

将以标准View()的格式显示列表的第一个元素,您将在RStudio中使用它。

如果您知道要查看的列表项的名称,则可以执行以下操作:

View(myList[["itemOne"]])

还有其他几种方法,但是这些方法可能最适合您。

答案 6 :(得分:0)

这是对长颈鹿的优秀答案的简单编辑。

对于某些列表,只打印嵌套对象子集的头部,在head()输出上方打印给定槽的名称是很方便的。

参数:

#'@param list a list object name
#'@param n an integer - the the objects within the list that you wish to print
#'@param hn an integer - the number of rows you wish head to print

用法:printList(mylist,n = 5,hn = 3)

printList <- function(list, n = length(list), hn = 6) {

  for (item in 1:n) {
    cat("\n", names(list[item]), ":\n")
    print(head(list[[item]], hn))

  }
}

对于数字列表,如果位数限制为3,则输出可能更具可读性,例如:

printList <- function(list, n = length(list), hn = 6) {

  for (item in 1:n) {
    cat("\n", names(list[item]), ":\n")
    print(head(list[[item]], hn), digits = 3)

  }
}

答案 7 :(得分:0)

我遇到了类似的问题并设法使用我的列表中的as_tibble()(dplyr或tibble包)来解决它,然后像往常一样使用View()

答案 8 :(得分:0)

在最新版本的RStudio中,您可以仅使用View()(或在“全局环境”窗格中单击对象旁边的蓝色小箭头)。

例如,如果我们使用以下内容创建列表:

test_list <- list(
  iris,
  mtcars
)

然后以上两种方法中的任何一种都会向您显示:

enter image description here

答案 9 :(得分:0)

我喜欢在列表上使用as.matrix(),然后可以使用标准的View()命令。