【发布时间】:2018-06-04 12:54:13
【问题描述】:
我有一个列表,
item1 <- list(1:5)
item2 <- list(5:10)
item3 <- list(ggplot(mtcars, aes(x=as.factor(cyl) )) + geom_bar())
list <- list("item1"=item1, "item2"=item2, "item3.plt"=item3)
在这种情况下,其中一个列表项将“.plt”作为其名称的一部分。 (其中包含一个 ggplot 图)
我正在编写一个函数来将此列表作为参数,以便它将所有具有“.plt”部分的项目打印为图形对象。
print.plots <- function(x){
e <- list2env(x) #do I need this?
list <- list()
a <- deparse(substitute(x))
for(i in 1:length(names(x))){
if(grepl(".plt", names(x)[i])){
list[i] <- list(paste0(paste0(a,"$"),names(x)[i]))
# Print here?
}
}
return(list)
}
print.plots(list)
我已经输入了return(list) 来查看输出是什么,它显示了一个包含 3 个项目的列表,前两个是 NULL,第三个是我需要打印的情节的名称。
[[1]]
NULL
[[2]]
NULL
[[3]]
"list$item3.plt"
我的if 条件似乎不包括名称中没有“.plt”的列表项,并且情节本身没有被打印(即使我删除了return 语句)。有人可以帮忙吗?
【问题讨论】:
-
为什么要创建函数?只需在控制台
list中调用您的列表,您就应该能够看到这些图。或者干脆使用print(list)这应该在您的列表中绘制图。只是好奇。为什么您的列表是嵌套列表?为什么不只是一个简单的列表?