我有 155 个元素的列表,eachc 包含 3 个列表。
下面我做了一个小例子。我只对保留 gene
中的值感兴趣,并尝试在 R
中一次性删除每个元素的第一个和第二个列表!留给我的只有基因中的值(value)观。
test <- list(name="Adipose", desc= "Roche", gene = c("KRT14", "RPE65"))
test1 <- list(name="muscle", desc= "Roche", gene = c("THRSP", "KRT14"))
test2 <- list(name="WBC" , desc= "Roche", gene = c("RBP4", "CCDC80"))
x <- c(test,test1, test2)
如何实现这一目标?
最佳答案
正如您在评论中发布的dput
所示,您的实际数据结构是列表的列表。在这种情况下,您可以使用 lapply
来获取您想要的内容:
list <- structure(list(Adipose = structure(list(name = "Adipose", desc = "Roche", genes = c("ACACB", "ACP5", "ACTA1")), .Names = c("name", "desc", "genes")), WBC = structure(list( name = "WBC ", desc = "Roche", genes = c("THRSP", "KRT14", "APOB", "LEP")), .Names = c("name", "desc", "genes"))), .Names = c("Adipose ", "WBC "))
lapply(list, function(x) x[names(x)=="genes"])
#$`Adipose `
#$`Adipose `$genes
#[1] "ACACB" "ACP5" "ACTA1"
#
#$`WBC `
#$`WBC `$genes
#[1] "THRSP" "KRT14" "APOB" "LEP"
关于从列表中删除子列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46586240/