如果我有以下列表:
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
Run Code Online (Sandbox Code Playgroud)
我可以lapply用来绘制每个列表元素:
lapply(comp.surv, function(x) plot(x))
Run Code Online (Sandbox Code Playgroud)
但是,我想将每个列表元素的名称包含为plot title(main).对于我的数据.例如,每幅图的标题是a,b和c分别.首先,我有一个gsub规则comp.surv$a,我回来a:
gsub(comp.surv\\$([a-z]+), "\\1", deparse(sustitute((comp.surv$a)))
# "a"
Run Code Online (Sandbox Code Playgroud)
这很好.但是我不能将这个结果嵌入lapply上面的陈述中.有任何想法吗?
与此同时,我试图通过创建一个包含主要参数的函数来绕过这个:
splot <- function(x){
plot(x, main = gsub(comp.surv\\$([a-z]+), "\\1" deparse(sustitute((x))))
}
lapply(comp.surv, function(x) splot(x))
Run Code Online (Sandbox Code Playgroud)
这将绘制comp.surv的每个子变量,但所有标题都是空白的.
如果我走的是正确的轨道,任何人都可以推荐吗?
一种可能性是循环遍历names列表:
lapply(names(comp.surv), function(x) plot(comp.surv[[x]], main = x))
Run Code Online (Sandbox Code Playgroud)
或稍微冗长,循环遍历列表索引:
lapply(seq_along(comp.surv), function(x) plot(comp.surv[[x]], main = names(comp.surv)[x]))
Run Code Online (Sandbox Code Playgroud)