我有一个数据表列表,每个表都包含相同格式的数据,每个数据都有一个唯一的名称。示例如下:
>头(名单$表1) 基因logFC negLogPval 1 CROT -…
代码的问题在于将函数应用于每个代码时 data.frame 在你的 list 然后 names(input) 为您提供列的名称 data.frame 。看这个例子。
data.frame
list
names(input)
data(mtcars) l = list() l$a = mtcars[, 1:2] l$b = mtcars[, 2:3] lapply(l, names) $a [1] "mpg" "cyl" $b [1] "cyl" "disp"
要解决此更改,请使用第二个参数名称的函数。
volc = function(input, name) { ggplot(input, aes(logFC, negLogPval)) + geom_point() ggsave(paste0("Volcano_", name, ".png"), device = "png") }
现在你可以使用了 Map 实现你的目标:
Map
Map(volc, list, names(list))
您不希望该列表中的data.frames的列名称,而是它们的名称,即 names(list) 。我建议迭代这些名称:
names(list)
volc = function(inputname){ ggplot(list[[inputname]], aes(logFC, negLogPval)) + geom_point() ggsave(paste0("Volcano_", inputname, ".png"), device = "png") } for (x in names(list)) volc(x)