首页 > 解决方案 > 访问没有名称的列表中的值

问题描述

我有以下命名字符列表,可用作 ggplot2 中的调色板:

aa_palette <- c("#75041a", "#a50026", "#d73027", "#f46d43", "#fdae61", "#fee090", "#ffffbf", 
"#e0f3f8", "#aad0e5", "#abd9e9", "#74add1", "#4575b4", "#313695", "#2a167a", "#989898")
names(aa_palette) <- c("Asx", "Glx", "Ser", "Thr", "His", "Gly", "Arg", "Ala", "Tyr", "Val", 
"Met", "Phe", "Leu", "Ile", "Other")

但是,我的一些绘图中的变量与此列表中的名称不对应,因此我只想提取值而不需要创建一个全新的对象。我知道我可以使用单个值执行此操作,[[]]但我想访问每个图中的多个值,因此我正在寻找一种方法来执行此操作,而不必单独访问每个值然后将c()它们一起访问。我尝试了以下方法:

unlist(aa_palette, use.names = FALSE) 
aa_palette[c("Asx", "Glx", "Ser")] 

但是这两种方法仍然返回列表中每个元素的名称。有没有办法只访问列表中部分或全部元素的值,而不必[[]]一个一个地访问它们?

标签: r

解决方案


你可以试试:

unname(aa_palette)

更新

根据下面的评论。

或者,您可以创建aa_palette一个列表,然后使用上面的代码。如果您class(aa_palette)在上面运行,您将得到character- 即一个因此不能“未列出”的字符向量。

aa_palette <- list("#75041a", "#a50026", "#d73027", "#f46d43", "#fdae61", "#fee090", "#ffffbf", 
"#e0f3f8", "#aad0e5", "#abd9e9", "#74add1", "#4575b4", "#313695", "#2a167a", "#989898")
names(aa_palette) <- c("Asx", "Glx", "Ser", "Thr", "His", "Gly", "Arg", "Ala", "Tyr", "Val", 
"Met", "Phe", "Leu", "Ile", "Other")

然后这个工作:

unlist(aa_palette, use.names = FALSE) 

推荐阅读