如果我有以下列表:
comp.surv <- list(a = 1:4, b = c(1, 2, 4, 8), c = c(1, 3, 8, 27))
comp.surv
# $a
# [1] 1 2 3 4
#
# $b
# [1] 1 2 4 8
#
# $c
# [1] 1 3 8 27
我可以使用lapply
绘制每个列表元素:
lapply(comp.surv, function(x) plot(x))
但是,我想将每个列表元素的名称包括为图标题(main
)。对于我的示例数据,每个图表的标题分别为a
,b
和c
。首先,我有一个gsub
规则给出comp.surv$a
,我返回a
:
gsub(comp.surv\\$([a-z]+), "\\1", deparse(sustitute((comp.surv$a)))
# "a"
哪个好。但是,我无法将此结果嵌入上面的lapply
语句中。有什么想法吗?
与此同时,我试图通过创建一个包含主要参数的函数来解决这个问题:
splot <- function(x){
plot(x, main = gsub(comp.surv\\$([a-z]+), "\\1" deparse(sustitute((x))))
}
lapply(comp.surv, function(x) splot(x))
这将绘制comp.surv的每个子变量,但所有标题都是空白的。
如果我走的是正确的轨道,有人可以推荐吗?
答案 0 :(得分:7)
一种可能性是循环遍历列表的names
:
lapply(names(comp.surv), function(x) plot(comp.surv[[x]], main = x))
或稍微详细一点,循环遍历列表索引:
lapply(seq_along(comp.surv), function(x) plot(comp.surv[[x]], main = names(comp.surv)[x]))
答案 1 :(得分:1)
这就是你想要的吗?
ns=names(comp.surv)
lapply(ns, function(x) plot(comp.surv[[x]], main=x,ylab="y"))