我正在尝试从数据框转到 R 中的列表结构(从技术上讲,我知道数据框是列表)。我有一个包含参考化学品及其机制不同目标的数据框。例如,雌激素是一种雌激素受体激动剂。我想要将数据框转换为列表,因为我厌倦了输入以下内容:
refchem$chemical_id[refchem$target=="AR" & refchem$mechanism=="Agonist"]
每次我需要访问特定参考化学品的列表时。我宁愿通过以下方式获取化学品:
refchem$AR$Agonist
尽管我给出了一个简化的示例,但我正在寻找一个普遍的答案,因为并非所有目标都具有所有机制。
这很容易通过循环来完成:
example <- data.frame(target=rep(c("t1","t2","t3"),each=20),
mechan=rep(c("m1","m2"),each=10,3),
chems=paste0("chem",1:60))
oneoption <- list()
for(target in unique(example$target)){
oneoption[[target]] <- list()
for(mech in unique(example$mechan)){
oneoption[[target]][[mech]] <- as.character(example$chems[ example$target==target & example$mechan==mech ])
}
}
我只是想知道是否有更聪明的方法来做到这一点。我试着玩弄,lapply
并没有取得任何进展。